C#将输入的一句话中的所有单词倒置

本文介绍了一个使用 C# 实现的句子翻转算法,该算法通过正则表达式匹配单词和非单词字符来翻转整个句子的顺序,同时保持了每个单词内部的顺序不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题来自百度知道:


要求不要开辟另外的内存空间,我应该没做到。但至少效果实现了。

我的方法是:

        static void Main(string[] args)
        {
            string sentence = "Recetly, hospitals in many";
            Console.WriteLine("  原来的句子:" + sentence);
            Console.WriteLine("处理后的句子:" + ReverseSentence(sentence));
            Console.Read();
        }

        static string ReverseSentence(string sentence) 
        {        
            char[] chars = sentence.ToCharArray();
            sentence = "";
            for (int i = chars.Length - 1; i >= 0; i--)
            {
                sentence += chars[i];
            }
            //Console.WriteLine(sentence);
            Regex regex = new Regex(@"(\b\w+\b)|(\W+)");
            MatchCollection matches = regex.Matches(sentence);
            //Console.WriteLine(matches.Count);
            string str = "";
            for (int i = matches.Count - 1; i >= 0;i-- )
            {
                str += matches[i].ToString();
            }
            return str;
        }

运行结果:   

 


那个逗号的位置不对,下面是修改后的:

	static void Main(string[] args)
        {
            string sentence = "Recetly, hospitals in many";
            Console.WriteLine("  原来的句子:" + sentence);
            Console.WriteLine("处理后的句子:" + ReverseSentence(sentence));
            Console.Read();
        }

        static string ReverseSentence(string sentence)//反转句子
        {
            sentence = ReverseString(sentence.Trim());
            Regex regex = new Regex(@"(\b\w+\b)|(\W+)");
            MatchCollection matches = regex.Matches(sentence);
            string str = "";
            for (int i = matches.Count - 1; i >= 0; i--)
            {
                if(i%2 == 0)
                {
                    str += matches[i].ToString();
                }
                else
                {
                    str += ReverseString(matches[i].ToString());
                }
            }
            return str;
        }
	static string ReverseString(string str)//反转单个字符串
        {
            char[] chars = str.ToCharArray();
            str = "";
            for (int i = chars.Length - 1; i >= 0; i--)
            {
                str += chars[i];
            }
            return str; 
        }

运行结果:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值