字符串中数字子串的求和

来源:互联网 发布:围棋软件知乎 编辑:程序博客网 时间:2024/05/29 10:48

if 0

/*
2、字符串中数字子串的求和
【题目】给定一个字符串str,求其中全部数字串所代表的数组之和
【要求】a>忽略小数点字符,如”A.1.3”其中包含两个数字1和3
b>如果紧贴数字子串的左侧出现字符”-”,当连续出现的数量为奇数时,则数字视为负,连续出现的数量为偶数时,则视为正,如,”A-1BC- -12”,其中包含数字为-1和12
【例如】str=”A1CD2E33” 结果为36
Str=”A-1B- -2C- -D6E” 结果为7
*/

int StringSum(string str1){    int cur = 0; //当前的字符    int flag = true; //判断当前数字是正数还是负数 true表示正数    int sum = 0; //求所有数字之和    int num = 0; //保存当前连续的数字    if(str1.length() == 0)        return 0;    for(int i = 0;i<str1.length();i++)    {        cur = str1[i]-'0';        if(cur<0||cur>9) //当前是字符        {            sum+=num; //加上之前的数字            num = 0;  //num保存当前连续的数字,所以每次都需要清0            if(str1[i] =='-')            {                if(str1[i-1] == '-') //如果当前以及上一个是'-',需要将flag取反                    flag = !flag;                else                    flag = false; //否则,为负数            }            else                flag = true; //当前字符不是‘-’,需要将flag转为true        }        else  //当前字符是数字        {            if(flag == true)  //如果该数字为整数                num=10*num+cur;            else                num = 10*num-cur;        }    }    sum+=num;    return sum; }int main(){    string str1;    cout<<"请输入一段字符串:";    cin>>str1;    int sum = StringSum(str1);    cout<<"字符串数字字串求和结果为:"<<sum<<endl;   }#endif
原创粉丝点击