1796. 字符串中第二大的数字
给你一个混合字符串 s
,请你返回 s
中 第二大 的数字,如果不存在第二大的数字,请你返回 -1
。
混合字符串 由小写英文字母和数字组成。
示例 1:
输入:s = "dfa12321afd"
输出:2
解释:出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。
示例 2:
输入:s = "abc1111"
输出:-1
解释:出现在 s 中的数字只包含 [1] 。没有第二大的数字。
提示:
-
1 <= s.length <= 500
-
s
只包含小写英文字母和(或)数字。
Solution
直接遍历。当当前数字大于第一大的数字或大于第二大的数字且小于第一大的数字时得出答案。注意重复的第一大数字对答案无贡献。
class Solution {
int secondHighest(String s) {
var second = -1;
var first = -1;
for(int i=0;i<s.length;i++){
var x = int.tryParse(s[i]);
// print(x);
if(x!=null){
if(x>first){
second = first;
first = x;
}
else if(x>second&&x<first){
second = x;
}
}
}
return second;
}
}
1.简单题都WA了一发,我真的会谢。
2.写于火车站,马上就可以回家啦~