列表

详情


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

给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。

最好 英文字母的大写和小写形式必须 s 中出现。

英文字母 b 比另一个英文字母 a 更好 的前提是:英文字母表中,ba 出现。

 

示例 1:

输入:s = "lEeTcOdE"
输出:"E"
解释:
字母 'E' 是唯一一个大写和小写形式都出现的字母。

示例 2:

输入:s = "arRAzFif"
输出:"R"
解释:
字母 'R' 是大写和小写形式都出现的最好英文字母。
注意 'A' 和 'F' 的大写和小写形式也都出现了,但是 'R' 比 'F' 和 'A' 更好。

示例 3:

输入:s = "AbCdEfGhIjK"
输出:""
解释:
不存在大写和小写形式都出现的字母。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: string greatestLetter(string s) { } };

javascript 解法, 执行用时: 64 ms, 内存消耗: 42.1 MB, 提交时间: 2023-01-27 08:35:30

/**
 * @param {string} s
 * @return {string}
 */
var greatestLetter = function(s) {
    const ht = new Set();
    for (let i = 0; i < s.length; i++) {
        const c = s[i];
        ht.add(c);
    }
    for (let i = 25; i >= 0; i--) {
        if (ht.has(String.fromCharCode('a'.charCodeAt() + i)) && ht.has(String.fromCharCode('A'.charCodeAt() + i))) {
            return String.fromCharCode('A'.charCodeAt() + i);
        }
    }
    return "";
};

golang 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2023-01-27 08:35:09

func greatestLetter(s string) string {
    set := map[rune]bool{}
    for _, c := range s {
        set[c] = true
    }
    for i := 'Z'; i >= 'A'; i-- {
        if set[i] && set[unicode.ToLower(i)] {
            return string(i)
        }
    }
    return ""
}

python3 解法, 执行用时: 28 ms, 内存消耗: 15.1 MB, 提交时间: 2022-06-20 10:26:26

class Solution:
    def greatestLetter(self, s: str) -> str:
        for i in range(ord('Z'), ord('A')-1, -1):
            if chr(i) in s and chr(i+32) in s:
                return chr(i)
        return ''

上一题