您的位置:首页 > 其它

字符串中数字子串的求和

2017-08-11 11:52 204 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息