「每日LeetCode」2021年4月13日

本文最后更新于:2023年3月19日 晚上

Lt1796. 字符串中第二大的数字

1796. 字符串中第二大的数字

给你一个混合字符串 s ,请你返回 s第二大  **的数字,如果不存在第二大的数字,请你返回 -1
**混合字符串  **由小写英文字母和数字组成。
 **示例 1:

1
2
3
输入:s = "dfa12321afd"
输出:2
解释:出现在 s 中的数字包括 [1, 2, 3] 。第二大的数字是 2

示例 2:

1
2
3
输入:s = "abc1111"
输出:-1
解释:出现在 s 中的数字只包含 [1] 。没有第二大的数字。

提示:

  • 1 <= s.length <= 500
  • s 只包含小写英文字母和(或)数字。

思路

正则取得数字部分,使用 set 去重,排序返回第 2 个元素,不存在则返回-1

解答

1
2
3
4
5
6
7
8
9
10
/**
* @param {string} s
* @return {number}
*/
var secondHighest = function (s) {
const res = [...new Set(s.replace(/[^0-9]/g, "").split("")).values()].sort(
(a, b) => b - a
)[1];
return res ? res : -1;
};