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

反转字符串单词时触发ArgumentOutOfRangeException,禁用Split等内置方法求解决

字符串单词反转问题修复及代码优化

问题分析

  • 原代码抛出ArgumentOutOfRangeException的核心原因是Substring参数使用错误:Substring(startIndex, length)的第二个参数是截取长度,而非结束索引。原代码传入j+1会导致截取长度超出字符串有效范围,触发异常。
  • 代码违反了禁用Concat的要求,且依赖Substring也不符合“不使用任何内置方法”的限制。

修复后的代码

string s = Console.ReadLine();
int i = s.Length - 1;
string ans = "";

while (i >= 0)
{
    // 跳过末尾空格
    while (i >= 0 && s[i] == ' ')
        i--;
    if (i < 0)
        break;
    
    // 标记单词末尾索引
    int j = i;
    // 定位单词起始位置的前一个索引
    while (i >= 0 && s[i] != ' ')
        i--;
    
    // 手动遍历构建单词(替代Substring)
    string word = "";
    for (int k = i + 1; k <= j; k++)
    {
        word += s[k];
    }
    
    // 拼接结果(替代Concat)
    if (ans == string.Empty)
    {
        ans = word;
    }
    else
    {
        ans += " " + word;
    }
}

Console.WriteLine(ans);
Console.ReadLine();

关键优化点

  • 替换内置方法:用for循环手动遍历字符构建单词,完全替代Substring;用+=直接拼接字符串,替代Concat,满足题目禁用要求。
  • 修正参数错误:彻底避免Substring参数误用导致的越界异常。
  • 提前边界判断:跳过空格后立即检查索引是否合法,避免后续无效逻辑执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:00:14