高级农民
- 积分
- 1327
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2018-4-9
- 最后登录
- 1970-1-1
|
- int removeExactOneDigit(string str1, string str2) {
- if (str2.empty()) return 0;
- if (str1.empty()) {
- int digit = 0;
- for (auto& c : str2) {
- if (isdigit(c)) digit++;
- }
- return str2.size() == 1 ? 0 : digit;
- }
- char& a = str1[0], &b = str2[0];
- if (a > b) {
- int ans = 0;
- if (isdigit(a))
- ans += str1.substr(1) < str2;
- if (isdigit(b))
- ans += str1 < str2.substr(1);
- return ans;
- }
- else if (a == b) {
- if (isdigit(a)) {
- return (str1.substr(1) < str2) + (str1 < str2.substr(1)) + removeExactOneDigit(str1.substr(1), str2.substr(1));
- }
- else {
- return removeExactOneDigit(str1.substr(1), str2.substr(1));
- }
- }
- int ans = 0;
- for (int i = 1, m = str1.size(); i < m; ++i) if (isdigit(str1[i])) ans++;
- for (int j = 1, n = str2.size(); j < n; ++j) if (isdigit(str2[j])) ans++;
- if (isdigit(a)) ans += (str1.substr(1) < str2);
- if (isdigit(b)) ans += (str1 < str2.substr(1));
- return ans;
- }
复制代码
我c++写的,逻辑和你差不多,就稍微改了a的首字母>=b的首字母的情况 |
|