题目要求:
字符串中的数字子串求和
要求忽略小数点,–得正例如:ABC1def-2cddg–3op,则解析为(1) + (-2) + (–3) = 1 - 2 + 3 = 2
这道题很简单我就不写题目分析了。直接给出了代码:
#include <stdio.h>
#include <vector>
#include <string>
using namespace std;
int sumNum(string &str) {
bool flag = true; /*当前是正是负*/
int sum = 0; /* 当前和 */
int num = 0; /* 最新从字符串中取出的值 */
int ch;
length = str.length();
for (int i = 0; i < length; ++i) {
ch = str[i] - 'a';
if (ch < 0 || ch > 9) {
if (0 != num ) {
if (flag) {
sum +=num;
} else {
sum = sum - num;
}
num = 0;
}
if ('-' == str[i]) {
flag = !flag;
}
} else {
num = 10 * num + ch;
}
}
return sum;
}