题目描述:
输入字符串s,输出s中包含所有整数的最小和。
说明:字符串s,只包含 a-z A-Z ± ;
合法的整数包括:
1) 正整数 一个或者多个0-9组成,如 0 2 3 002 102
2)负整数 负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023
输入描述:
包含数字的字符串
输出描述:
所有整数的最小和
示例1:
输入
bb1234aa
输出
10
示例2:
输入
bb12-34aa
输出
-31
说明:1+2+(-34) = -31
C++源码:
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <numeric>using namespace std;// 寻找字符串中的最小数字和
int findMinSum(const string& s) {int minSum = 0;int length = s.size();for (int i = 0; i < length; i++){if (s[i] >= '0' && s[i] <= '9') { int strEnd = i, sum = 0; while (strEnd < length && s[strEnd] >= '0' && s[strEnd] <= '9') {sum += s[strEnd] - '0';strEnd++;}if (i > 0 && s[i - 1] == '-') minSum -= stoll(s.substr(i, strEnd - i));elseminSum += sum; i = strEnd - 1;}}return minSum;
}int main() {string inputString;cin >> inputString;int result = findMinSum(inputString);cout << "最小和为: " << result << endl;system("pause");return 0;
}