「每日LeetCode」2022年6月25日

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

  1. 兼具大小写的最好英文字母

2309. 兼具大小写的最好英文字母

给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。
最好 英文字母的大写和小写形式必须 在 s 中出现。
英文字母 b 比另一个英文字母 a 更好 的前提是:英文字母表中,b 在 a 之 出现。

示例 1:
输入:s = “l*Ee_TcOd*E输出:“E” 解释: 字母 ‘E’ 是唯一一个大写和小写形式都出现的字母。
示例 2:
输入:s = “a
rR_AzFif” 输出:“R” 解释: 字母 ‘R’ 是大写和小写形式都出现的最好英文字母。 注意 ‘A’ 和 ‘F’ 的大写和小写形式也都出现了,但是 ‘R’ 比 ‘F’ 和 ‘A’ 更好。
示例 3:
输入:s = “AbCdEfGhIjK” 输出:“” 解释: 不存在大写和小写形式都出现的字母。

提示:

  • 1 <= s.length <= 1000
  • s 由小写和大写英文字母组成

思路

按题意模拟即可

解答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/**
* @param {string} s
* @return {string}
*/
var greatestLetter = function (s) {
const map = {};
let res = "";
for (const char of s) {
const lower = char.toLocaleLowerCase();
const mapChar = map[lower];
if (!mapChar) {
map[lower] = char;
} else {
if (/[a-z]/.test(mapChar)) {
if (char === mapChar.toLocaleUpperCase()) {
res = char.toLocaleUpperCase() > res ? char.toLocaleUpperCase() : res;
}
} else if (/[A-Z]/.test(mapChar)) {
if (char === mapChar.toLocaleLowerCase()) {
res = char.toLocaleUpperCase() > res ? char.toLocaleUpperCase() : res;
}
}
}
}
return res.toLocaleUpperCase();
};