日期:2014-05-18  浏览次数:20952 次

求把字符串倒置,要求简单性能高效的方法,用c#
自己就想到这一个
private string DaoZhi(string str)
  { 
  StringBuilder sb = new StringBuilder();
  for (int i = str.Length - 1;i >=0;i--)
  {
  sb.Append(str[i]);
  } 
  return sb.ToString();
  }

------解决方案--------------------
试试这个吧

C# code
private   void   button1_Click(object   sender,   EventArgs   e)  
                  {  
                          char[]   sc   =   textBox1.Text.ToCharArray();  
                          Array.Reverse(sc);  
                          textBox1.Text   =   new   String(sc);  
                  }

------解决方案--------------------
http://topic.csdn.net/t/20060122/13/4530364.html
------解决方案--------------------
在Microsoft.VisualBasic命名空间中有个类Strings可以倒置(CLR中,你知道的,C#也可以调用)

另外,如果是.net 3.5,可以使用扩展方法Reverse
string s;
string ss=new string(s.Reverse().ToArray());//在string上,智能感知没有Reverse这个方法,但实际上可以用
------解决方案--------------------
过程并不复杂,所以高效与否很难体现
印象中好象没有现成的属性方法,现写的
public static string fanzhuan(string a)
{
int len=a.Length;
string s="";
for(int i=len-1;i>=0;i--)
{
s=s+a.Substring(i,1);
}
return s;
}
------解决方案--------------------
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string str = "abcdefg我们";
Console.WriteLine(str);
Console.WriteLine(Reverse(str));
}

public static string Reverse(string str)
{
if (str == null || str.Length < 2) return str;

char[] charArr = str.ToCharArray();

for (int i = 0, j = charArr.Length - 1; i < charArr.Length / 2; i++, j--)
{
char tmp = charArr[i];
charArr[i] = charArr[j];
charArr[j] = tmp;
}
return new string(charArr);
}
}
}
------解决方案--------------------
再怎么高效,也是O(n)的时间复杂度。所以这个问题没有什么“高效”的方法。

string s = "abcdef"

for(int i = 0; i< s.length /2 ; i++)
{
char tempc = s[i];
s[i] = s[s.length-i];
s[s.length-i] = tempc;
}
------解决方案--------------------
o(n)