一、系統自帶的字符串反轉的方法:
static void Main(string[] args)
{
String str =Console.ReadLine();
char[] arry = str.ToCharArray();
Array.Reverse(arry);
Console.WriteLine(arry);
Console.ReadKey();
}
二、下面我們就用把字符串拆分成字符數組,然后用遍歷,來對數組進行反轉的實現。
1 namespace ConsoleApplication1 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 String str =Console.ReadLine(); 8 char[] oldchar = str.ToCharArray();//原來的字符串轉換成字符數組
9
10 int l = str.Length;//計算長度,為循環做准備。
11 char[] newchar=new char[l];//創建一個相同長度的數組用來存儲翻轉后的新數組。
12
13 for (int i = 0; i < l; i++) 14 { 15 newchar[i] = oldchar[l - i - 1];//將oldchar[]數組的最后一個給newchar[]數組的第一個,這樣就反轉了
16
17
18 } 19 Console.Write(new string(newchar));//重新調用構造函數進行實例化一個新的反轉后的字符串。
20 Console.ReadKey(); 21
22
23
24
25
26 } 27
28
29
30 }
三、1/2
方法三其實就是方法二的一個延伸,比如字符串:a b c d ,我們可以首尾依次對調,d b c a(一次),d c b a(兩次)。所以可以看出,其實可以循環次數知識長度的一半就可以了!!其中首位依次對調,這個就是我們平常常見的兩個值怎樣換值的問題,找個中間人唄。
1 static void Main(string[] args) 2 { 3 String str =Console.ReadLine(); 4 char[] oldchar = str.ToCharArray();//原來的字符串轉換成字符數組
5
6 int l = str.Length;//計算長度,為循環做准備。
7
8
9 for (int i = 0; i < l/2; i++) 10 { 11 char middle;//創建個中間人
12 middle=oldchar[i];//前端值給中間人
13 oldchar[i] = oldchar[l - i - 1];//對應的后端值,覆蓋前端值
14 oldchar[l - i - 1] = middle;//中間人,把前端值,給對應的后端值
15
16
17
18
19 } 20 Console.Write(new string(oldchar));//數組重組為一個字符串。
21 Console.ReadKey(); 22 }
四、運用StringBuilder,提供的方法較為簡單.
1 class Program 2 { 3 static void Main(string[] args) 4 { 5
6 string old = Console.ReadLine(); 7 StringBuilder stb = new StringBuilder(old.Length); 8
9 for (int i=old.Length ; i>0; i--) 10 { 11 stb.Append(old[i-1]); 12
13
14
15 } 16 Console.Write(stb.ToString());//數組重組為一個字符串。
17 Console.ReadKey(); 18
19 }
五、實用棧的方法。棧是根據先進后出的方式處理數據。可以用棧些計算器這樣的小程序,下面我們就用棧來進行字符串的反轉。
1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Stack<char> sta=new Stack<char>();//定義數組來存儲拆分的字符串 6 string str=Console.ReadLine(); 7 int l = str.Length; 8 for (int i = 0; i < l; i++) 9 { 10 sta.Push(str[i]);//壓入棧中 11 12 } 13 char[] c = new char[l]; 14 for (int i = 0; i < l; i++) 15 { 16 17 c[i] = sta.Pop();//出棧 18 } 19 Console.WriteLine(new string(c)); 20 Console.ReadLine(); 21 22 } 23 24 25 26 }
這個的思想很重要,雖然用來兩次循環,上面那次循環完全可以用foreach遍歷。棧是個線性數據結構,有后進后進先出的特點。先進的壓入棧底,后進的壓入棧頂,出棧時候就從棧頂開始移出。
好吧···其實還有很多方法的···就寫到這···希望大家多多指正···
