模拟
一次遍历,维护最大值和次大值。
提示 : 字符串可能出现一堆相等的数字字符,这种情况是没有次大值的,所以仅当次大值不等于最大值,更新次大值。
i
s
n
u
m
isnum
isnum 函数非官方,仅用于判断数字字符。
C
+
+
C++
C++ 用户调用
i
s
d
i
g
i
t
isdigit
isdigit 库函数,写的更快。
class Solution {
public:
bool isnum(char s){
if(s>='0'&&s<='9') return true;
return false;
}
int secondHighest(string s) {
int ans = -1;
int first = -1;
for(auto &x:s) {
if(isnum(x)){
int t = x -'0';
if(first<t){
ans = first;
first = t;
}else{
if(first!=t&&ans<t) ans = t;
}
}
}
return ans;
}
};
- 时间复杂度 : O ( n ) O(n) O(n) , 遍历字符串的时间复杂度 O ( n ) O(n) O(n) 。
- 空间复杂度 : O ( 1 ) O(1) O(1) , 只使用常量级空间 。