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

题目:

给定一个字符串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;
    }
时间: 2024-10-27 15:03:46

[算法]字符串中数字子串的求和的相关文章

字符串中数字子串的求和

字符串中数字子串的求和 题目: 给定一个字符串str,求其中全部数字串所代表的数字之和. 要求: 1.忽略小数点字符,例如"A1.3",其中包含两个数字1和3. 2.如果紧贴数字子串的左侧出现字符'-',当连续出现次数为奇数时, 则数字视为负,连续出现的数量为偶数时,则数字视为正. 例如:"A-1BC--12",其中包含数字为-1和12. 例: str = "A1CD2E33" , 返回36 str = "A-1B--2C--D6E&q

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

字符串中数字子串的求和 给定一个字符串str,求其中全部数字串所代表的数字之和 1. 忽略小数点," A1.3 " 表示的数字就是包含两个数字 1 和 3 2. 紧贴数字的左边出现 "-",其连续出现的数量如果为奇数,就视为 负,如果为偶数,就视为 正 " A-1BC--23" 表示的是 -1 和 23 [解题思路] 首先定义三个变量, res表示目前的累加和,num表示当前收集到的数字,布尔型变量flag表示将num加到res中,num是正还是

spoj 694 求一个字符串中不同子串的个数

SPOJ Problem Set (classical) 694. Distinct Substrings Problem code: DISUBSTR Given a string, we need to find the total number of its distinct substrings. Input T- number of test cases. T<=20; Each test case consists of one string, whose length is <=

字符串-02. 删除字符串中的子串(20)

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2. 输入格式: 输入在2行中分别给出不超过80个字符长度的.以回车结束的2个非空字符串,对应S1和S2. 输出格式: 在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串. 输入样例: Tomcat is a male ccatat cat 输出样例: Tom is a male import java.util.Scanner; public class Main { public static

C++ 在字符串中插入子串+推断字符串是否由空格组成

// Example3.cpp : 定义控制台应用程序的入口点. #include "StdAfx.h" #include <string> #include <iostream> using namespace std; int main(void) { string str,str1,str2; int index; //推断截取的子串是否由blanks组成 str=" cjc is a master."; str1="cjc

删除字符串中的子串

输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2. 输入格式: 输入在2行中分别给出不超过80个字符长度的.以回车结束的2个非空字符串,对应S1和S2. 输出格式: 在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串. 输入样例: Tomcat is a male ccatat cat 输出样例: Tom is a male #include<stdio.h> #include<string.h> int main(){ cha

08-在字符串中统计子串出现的次数

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; namespace _05在字符串中统计子串出现的次数 { class Program { static void Main(string[] args) { int count = SubstringCount("qhwerzdfrefysasefh

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

C++ 在字符串中插入子串+判断字符串是否由空格组成

// Example3.cpp : 定义控制台应用程序的入口点. #include "StdAfx.h" #include <string> #include <iostream> using namespace std; int main(void) { string str,str1,str2; int index; //判断截取的子串是否由blanks组成 str=" cjc is a master."; str1="cjc