方法一:遍历+数字判断
思路与算法
找到字符串中的每个数字,然后和前一个数字比较,如果不是严格递增就提前返回 false。否则返回 true。
注意这题不要使用 split 方法,因为 java 的 split 耗时多。
代码
class Solution {
public boolean areNumbersAscending(String s) {
int pre = 0;
int pos = 0;
int n = s.length();
while (pos < n) {
char u = s.charAt(pos);
if (Character.isDigit(u)) {
int cur = u - '0';
pos++;
while (pos < n) {
char v = s.charAt(pos);
if (Character.isDigit(v)) {
cur = cur * 10 + v - '0';
pos++;
} else {
break;
}
}
if (cur <= pre) {
return false;
}
pre = cur;
} else {
pos++;
}
}
return true;
}
}
复杂度分析
时间复杂度:O(n),遍历 n 个元素
空间复杂度:O(1),需要 2 个整数变量