You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中用for循环实现整句单词反转的技术问询(禁用Split/Reverse)

仅用for循环实现C#句子单词反转(禁用Split和Reverse函数)

嘿,我来帮你搞定这个问题!你需要纯靠for循环反转句子里的单词顺序,还不能用Split和Reverse这类现成函数对吧?先给你一个可直接运行的完整实现,再一步步拆解逻辑。

完整可运行代码

using System;

class Program
{
    static void Main()
    {
        string input = "I'm Learning c#";
        char[] inputChars = input.ToCharArray();
        int wordEndIndex = inputChars.Length - 1;

        // 从字符串末尾开始向前遍历
        for (int i = inputChars.Length - 1; i >= 0; i--)
        {
            // 碰到空格,说明找到了一个单词的左边界
            if (inputChars[i] == ' ')
            {
                // 输出当前单词(从空格后一位到wordEndIndex)
                for (int j = i + 1; j <= wordEndIndex; j++)
                {
                    Console.Write(inputChars[j]);
                }
                Console.Write(" ");
                // 更新单词末尾索引到空格前一位
                wordEndIndex = i - 1;
            }
            // 遍历到字符串开头,处理最后一个(原句第一个)单词
            else if (i == 0)
            {
                for (int j = i; j <= wordEndIndex; j++)
                {
                    Console.Write(inputChars[j]);
                }
            }
        }

        Console.ReadKey();
    }
}

逻辑拆解

这个实现的核心思路是从后往前找单词边界,正向输出每个单词:

  • 首先把输入字符串转成字符数组,方便逐个访问每个字符
  • 用wordEndIndex记录当前要输出的单词的最后一个字符索引
  • 外层for循环从字符串末尾开始向前扫:
    • 当遇到空格时,说明i+1到wordEndIndex是一个完整的单词,用内层for循环把这个单词按原顺序输出,然后输出空格,再更新wordEndIndex到空格的前一位
    • 当遍历到字符串第一个字符时,直接输出从0到wordEndIndex的字符,也就是原句的第一个单词(现在是最后一个输出的)

关于你提供的代码片段的小建议

你给出的片段里用到了数组b和c来反转字符再反转回来,其实有点绕。上面的实现直接定位单词边界输出,逻辑更清晰,也避免了额外数组的开销,而且能正确处理所有单词(包括开头和结尾的情况)。

运行上面的代码,输入I'm Learning c#就会输出c# Learning I'm,完全符合你的需求!

内容的提问来源于stack exchange,提问作者Akhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:58:30