1796. 字符串中第二大的数字
难度简单9收藏分享切换为英文接收动态反馈
给你一个混合字符串 s
,请你返回 s
中 第二大 的数字,如果不存在第二大的数字,请你返回 -1
。
混合字符串 由小写英文字母和数字组成。
示例 1:
输入:s = "dfa12321afd" 输出:2 解释:出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2 。
示例 2:
输入:s = "abc1111" 输出:-1 解释:出现在 s 中的数字只包含 [1] 。没有第二大的数字。
提示:
1 <= s.length <= 500
s
只包含小写英文字母和(或)数字。
通过次数9,122提交次数18,661
题解:找到数字,数字数组排序,排序的时候消除重复项,找到第二个大的,返回,找不到返回-1。
class Solution {
public:int secondHighest(string s) {vector<int> tem;for(auto &i:s){if(i>='0' && i<='9'){tem.push_back(i-'0');}}if(tem.size()==0 || tem.size()==1)return -1;sort(tem.begin(),tem.end());tem.erase(unique(tem.begin(),tem.end()),tem.end());if(tem.size()==1)return -1;elsereturn tem[tem.size()-2];}
};
执行结果:
通过
显示详情
添加备注
执行用时:4 ms, 在所有 C++ 提交中击败了68.58%的用户
内存消耗:7.1 MB, 在所有 C++ 提交中击败了9.06%的用户
通过测试用例:301 / 301