问题1
- 求出字符串中的最长连续数字串的长度
代码
#include <iostream> #include <vector> #include <math.h> #include <random> #include <limits> #include <string> using namespace std; int main() { string str; cin >> str; int index = 0; int max_len = 0; int curr_len = 0; int max_start = 0; int curr_start = 0; while ( index < str.size() ) { if (str[index] >= '0' && str[index] <= '9') { curr_start = index; index++; curr_len = 1; while (index < str.size() && str[index] >= '0' && str[index] <= '9') { index++; curr_len++; } if (max_len < curr_len) { max_start = curr_start; max_len = curr_len; } } else index++; } cout << "max len : " << max_len << endl; cout << "max start : " << max_start << endl; system("pause"); return 0; }
问题2
- 描述:数字串之间允许最多有一个非数字的字符,计算此时求得的最长数字串。(比如说
1234a12
的结果是7
)。 代码
#include <iostream> #include <vector> #include <math.h> #include <random> #include <limits> #include <string> #include <math.h> #include <algorithm> using namespace std; int main() { string str; cin >> str; int non_digit_len = 0; int index = 0; int curr_len = 0; int max_start = 0; int max_len = 0; int last_len = -1; while ( index < str.size() ) { if (str[index] >= '0' && str[index] <= '9') { while (index < str.size() && str[index] >= '0' && str[index] <= '9') { index++; curr_len++; } if (max_len < curr_len + last_len + 1) { max_len = curr_len; } } else { while (index < str.size() && !(str[index] >= '0' && str[index] <= '9')) { index++; non_digit_len++; } if (non_digit_len == 1) { last_len = curr_len; curr_len = 0; } else { last_len = -1; curr_len = 0; } non_digit_len = 0; } max_len = std::max(max_len, curr_len + last_len + 1); } cout << "max len : " << max_len << endl; system("pause"); return 0; }