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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[算法]字符串中数字子串的求和相关的知识,希望对你有一定的参考价值。

题目:

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

要求:

1.忽略小数点

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

举例:

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

思路:

变量设置:

1.int res表示结果

2.int num表示当前数字

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

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

技术分享

程序:

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;
    }

以上是关于[算法]字符串中数字子串的求和的主要内容,如果未能解决你的问题,请参考以下文章

字符串问题----字符串中数字子串的求和

字符串问题之 字符串中的数字子串求和

华为笔试算法题1

《算法竞赛入门经典》3.3最长回文子串

算法竞赛入门经典 例题 3-4 回文串

求出子串(模式串)的next函数值,利用kmp算法实现模式与主串的匹配算法