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

字符串按指定长度分段反转:剩余字符未正确反转的技术求助

解决字符串分段反转时剩余字符未处理的问题

我一眼就看出问题所在啦——你的代码在处理到最后一段字符时,如果剩余长度不足指定的x,就直接跳出循环了,根本没对这段字符执行反转操作!咱们来把这个问题搞定。

问题分析

你看,当输入HELLO和数字3时:

  1. 第一次循环i=0,处理前3个字符HEL,反转成LEH,字符串变成LEHLO;
  2. 接着i +=3变成3,这时候i+x=6,而字符串长度是5(索引最大到4),你的判断if (i + x > st.length()-1){ break; }就触发了,直接跳出循环,剩下的LO根本没被反转,所以结果才是LEHLO而非预期的LEHOL。

修复方案

核心思路就是:不管最后一段剩余字符有多少,都要执行反转。我们只需要把分段的结束索引改成Math.min(i+x, st.length()),确保不会超出字符串长度,同时去掉多余的break判断就行。

修改后的代码如下:

// 示例输入
String st = "HELLO";
int x = 3;

for (int i = 0; i < st.length();) {
    // 计算当前分段的结束位置,避免越界
    int endIndex = Math.min(i + x, st.length());
    // 反转当前分段并重新拼接字符串
    st = st.substring(0, i) 
            + new String(new StringBuilder(st.substring(i, endIndex)).reverse()) 
            + st.substring(endIndex);
    // 跳到下一个分段的起始位置
    i += x;
}

System.out.println(st); // 输出:LEHOL

验证效果

  • 测试TELLER和3:第一次反转前3个字符TEL→LET,字符串变成LETTER;接着i=3,反转后3个字符LER→REL,最终得到LETREL,符合预期。
  • 测试HELLO和3:第二次循环处理索引3到5的LO,反转成OL,拼接后得到LEHOL,完美解决你的问题!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 16:57:37