题解
【基础】隐藏的最大整数
1 条题解
-
0
解题思路
扫描字符串中的连续数字,组成整数并记录最大整数的起始位置,位置从1开始。
参考代码
#include <iostream> #include <string> using namespace std; int main() { string s; cin >> s; long long big = -1, x = 0; int pos = 0, bpos = 0; for (int i = 0; i <= (int)s.size(); i++) { if (i < (int)s.size() && s[i] >= '0' && s[i] <= '9') { // 连续数字逐位组成一个完整的整数。 x = x * 10 + s[i] - '0'; } else { // 找到更大的整数时,同时记下它的起始位置。 if (x > big) { big = x; bpos = pos + 1; } x = 0; // 下一个整数的位置从当前分隔符的后面开始。 pos = i + 1; } } // 题目中的位置从1开始,所以输出bpos。 cout << bpos; return 0; }复杂度分析
代码只使用了简单变量、循环和字符串。设输入长度为 n,时间复杂度为 O(n^2)(若有嵌套枚举则按实际循环计算),额外空间复杂度为 O(n)。
- 1