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

按指定长度拆分字符串并反转分段求和的代码优化求助

解决字符串分段反转求和的通用实现思路

嘿,我完全懂你遇到的麻烦——硬编码substring的方式太僵硬了,换个分段长度就得重写代码,而且手动计算索引还容易出错对吧?咱们来搞一个通用的方案,不管分段长度x是多少(只要是字符串长度的约数)都能适配。

核心思路拆解

要实现这个需求,咱们可以分成这几步走:

  • 合法性校验:先确认x确实是字符串长度的约数,避免出现分段不均的情况
  • 循环分段:用循环代替硬编码,自动计算每个分段的起始和结束索引
  • 反转并转换:对每个分段进行反转,再转成数值类型
  • 累加求和:把所有反转后的数值加起来得到最终结果

通用代码实现

下面是Java的完整实现,完全适配任意合法的分段长度:

public class SegmentReverseSum {
    public static void main(String[] args) {
        int addressLength = 3; // 可以换成4、6等任意合法值
        String str = "009056737152";
        
        // 第一步:校验分段长度是否合法
        if (str.length() % addressLength != 0) {
            System.out.println("Error: 分段长度必须是字符串长度的约数");
            return;
        }
        
        int totalSum = 0;
        int segmentCount = str.length() / addressLength;
        
        // 第二步:循环处理每个分段
        for (int i = 0; i < segmentCount; i++) {
            // 计算当前分段的索引:起始位置是i*addressLength,结束位置是起始+分段长度
            int startIdx = i * addressLength;
            int endIdx = startIdx + addressLength;
            
            // 截取分段字符串
            String segment = str.substring(startIdx, endIdx);
            
            // 第三步:反转分段并转成整数
            String reversedSegment = new StringBuilder(segment).reverse().toString();
            int segmentNum = Integer.parseInt(reversedSegment);
            
            // 第四步:累加到总和
            totalSum += segmentNum;
            
            // 可选:打印中间过程,和你原代码的输出对应
            System.out.println("原分段:" + segment + " → 反转后:" + reversedSegment);
        }
        
        // 输出最终结果
        System.out.println("最终求和结果:" + totalSum);
    }
}

关键细节说明

  • 循环替代硬编码:不管x是3(分4段)还是4(分3段),segmentCount = str.length() / addressLength会自动计算分段数量,循环会处理每一段,不用手动写多个substring
  • 索引计算更直观:用i * addressLength计算起始索引,避免原代码里复杂的减法运算,减少出错概率
  • 反转字符串的简便方法:StringBuilder的reverse()方法是Java里反转字符串最常用的方式,简洁可靠
  • 溢出处理:如果你的字符串很长,反转后的数值可能超出Integer范围,可以换成Long.parseLong()或者BigInteger来处理大数

测试示例

当addressLength=3时,运行结果和你给出的例子一致:

原分段:009 → 反转后:009
原分段:056 → 反转后:650
原分段:737 → 反转后:737
原分段:152 → 反转后:251
最终求和结果:1647

如果换成addressLength=4,会自动分成3段:

原分段:0090 → 反转后:0900
原分段:5673 → 反转后:3765
原分段:7152 → 反转后:2517
最终求和结果:7182

内容的提问来源于stack exchange,提问作者Stabiler Flüchtling

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:12:31