java解法

解析字符:逐一遍历字符串中的每个字符,判断是否为数字。
处理正负符号:
如果数字前面有负号,将数字累积到一个缓冲区,稍后作为负数处理。
如果数字前面没有负号,则直接加到总和中。
管理数字缓冲区:
遇到非数字字符时,检查缓冲区是否有未处理的负数。如果有,将缓冲区的内容从总和中减去。
遇到新负号时重置缓冲区,准备解析下一个负数。
结果输出:遍历完成后,返回总和。

import java.math.BigInteger;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); // 读取输入
        System.out.println(getResult(sc.nextLine())); // 调用方法处理输入字符串并输出结果
    }

    // 计算字符串中所有数字的和(考虑正负符号)
    public static String getResult(String s) {
        boolean isNegative = false; // 标记当前数字是否为负数
        StringBuilder numberBuffer = new StringBuilder(); // 用于存储当前解析的数字
        BigInteger sum = BigInteger.ZERO; // 用于存储最终结果(初始化为0)

        // 遍历字符串中的每个字符
        for (int i = 0; i < s.length(); i++) {
            char currentChar = s.charAt(i); // 当前字符

            if (Character.isDigit(currentChar)) { // 如果当前字符是数字
                if (isNegative) { // 如果处于负号状态
                    numberBuffer.append(currentChar); // 将数字添加到缓冲区
                } else { // 如果是正数
                    sum = sum.add(new BigInteger(String.valueOf(currentChar))); // 直接加到总和中
                }
            } else { // 如果当前字符不是数字
                sum = updateSumAndResetBuffer(isNegative, numberBuffer, sum); // 更新总和并清空缓冲区
                isNegative = currentChar == '-'; // 判断当前字符是否是负号,更新标记
            }
        }

        // 遍历结束后,检查是否有未处理的负数
        sum = updateSumAndResetBuffer(isNegative, numberBuffer, sum);
        return sum.toString(); // 将最终结果转为字符串返回
    }

    // 更新总和并重置数字缓冲区
    private static BigInteger updateSumAndResetBuffer(boolean isNegative, StringBuilder numberBuffer, BigInteger sum) {
        if (isNegative && numberBuffer.length() > 0) { // 如果缓冲区有未处理的负数
            sum = sum.subtract(new BigInteger(numberBuffer.toString())); // 将负数从总和中减去
            numberBuffer.setLength(0); // 清空缓冲区
        }
        return sum; // 返回更新后的总和
    }
}

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

C++解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

C解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

JS解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

注:本文转载自blog.csdn.net的CodeClimb的文章"https://blog.csdn.net/CodeClimb/article/details/145066169"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!