字符串反轉····



 

一、系統自帶的字符串反轉的方法:

  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遍歷。棧是個線性數據結構,有后進后進先出的特點。先進的壓入棧底,后進的壓入棧頂,出棧時候就從棧頂開始移出。

 


好吧···其實還有很多方法的···就寫到這···希望大家多多指正··· 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM