您的位置:首页 > 其它

字符串中数字子串的求和

2015-10-11 00:04 295 查看
* 字符串中数字子串的求和

题目:

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

要求:

1. 忽略小数点字符,例如"A1.3",其中包含两个数字1和3

2. 如果紧贴数字子串的左侧出现字符"-",当连续出现的数量为奇数时,则数字视为负数,连续出现的数量为偶数时,则数字视为证书。例如,"A-1BC--12",其中包含数字为-1和12.

举例:

str="A1CD2E33",返回36.

str="A-1B--2C--D6E",返回7.

#include<iostream>
#include<string>
using namespace std;

int numSum(string str);

int main()
{
string s;
while(cin>>s)
cout<<numSum(s)<<endl;
return 0;
}

int numSum(string str)
{
if(str.empty())
return 0;
int res = 0, num = 0;
bool posi = true;
int cur = 0;

for(int i = 0; i < str.length(); i ++)
{
cur = str[i] - '0';
if(cur < 0 || cur > 9)
{
res += num;
num = 0;//num不要忘记置0
if(str[i] == '-')
{
//注意i是否是大于等于0,以及考虑前一个是不是-
if(i - 1 > -1 && str[i-1] == '-')
posi = !posi;
else
posi = false;
}
else
posi = true;
}
else
num = num*10 + (posi ? cur : -cur);//前一位是需要*10的
}
res += num;//最后一个num不要忘记加上
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: