字符串反转····


 

一、系统自带的字符串反转的方法:

  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遍历。栈是个线性数据结构,有后进后进先出的特点。先进的压入栈底,后进的压入栈顶,出栈时候就从栈顶开始移出。

 


好吧···其实还有很多方法的···就写到这···希望大家多多指正··· 

 

posted @   K战神  阅读(3265)  评论(8编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
点击右上角即可分享
微信分享提示