[算法]字符串中数字子串的求和

题目:

给定一个字符串str,求其中全部数字串所代表的数字之和。

要求:

1.忽略小数点

2.考虑‘-’,如果有连续奇数个,则为负,如果有连续偶数个,就为正数。

举例:

str=“A-1B--2C--D6E” return 7

思路:

变量设置:

1.int res表示结果

2.int num表示当前数字

3.int cur表示     当前字符-‘0’

4.boolean表示当前当前数字的正负

绘图1

程序:

public static int numSum(String str) {
        //如果字符串为null或者字符串的长度为零,返回0;
        if (str == null || str.length() == 0)
            return 0;
        char[] chars = str.toCharArray();
        int res = 0;
        int num = 0;
        boolean posi = true;
        int cur = 0;
        for (int i = 0; i < chars.length; i++) {
            cur = chars[i] - '0';
            //判断当前字符是否为数字
            if (cur >= 0 && cur <= 9) {
                //数字增加一位
                num = num * 10 + (posi ? cur : -cur);
            } else {
                //一旦遇到了非数字,那么就将当前数字加到结果res上
                res += num;
                num = 0;
                //如果不是负号
                if (chars[i] != '-') {
                    posi = true;
                } else {
                    //是负号,但是仍要判断当前字符是否是第一个字符||前一个字符是否是负号
                    if (i == 0 || chars[i - 1] != '-') {
                        posi = false;
                    } else
                        posi = !posi;
                }
            }
        }
        return res;
    }
原文地址:https://www.cnblogs.com/xiaomoxian/p/5157136.html