LeetCode 题解工作台

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

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

category

3

题型

code_blocks

7

代码语言

hub

3

相关题

当前训练重点

简单 · 哈希·表·结合·string

bolt

答案摘要

我们先用哈希表 记录字符串 中出现的所有字母,然后从大写字母表的最后一个字母开始枚举,如果当前字母的大写和小写形式都在 中,则返回该字母。 枚举结束后,如果没有找到符合条件的字母,则返回空字符串。

Interview AiBox logo

Interview AiBox 实时 AI 助手,陪你讲清 哈希·表·结合·string 题型思路

试试 AiBox 面试助手arrow_forward
description

题目描述

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

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

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

 

示例 1:

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

示例 2:

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

示例 3:

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

 

提示:

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

解题思路

方法一:哈希表 + 枚举

我们先用哈希表 ssss 记录字符串 ss 中出现的所有字母,然后从大写字母表的最后一个字母开始枚举,如果当前字母的大写和小写形式都在 ssss 中,则返回该字母。

枚举结束后,如果没有找到符合条件的字母,则返回空字符串。

时间复杂度 O(n)O(n),空间复杂度 O(C)O(C)。其中 nnCC 分别是字符串 ss 的长度和字符集的大小。

1
2
3
4
5
6
7
8
class Solution:
    def greatestLetter(self, s: str) -> str:
        ss = set(s)
        for c in ascii_uppercase[::-1]:
            if c in ss and c.lower() in ss:
                return c
        return ''
speed

复杂度分析

指标
时间complexity is O(n) for scanning the string and O(1) for checking up to 26 letters. Space complexity is O(n) for storing sets of characters.
空间Depends on the final approach
psychology

面试官常问的追问

外企场景
  • question_mark

    Look for a hash table or set-based solution instead of nested loops.

  • question_mark

    Pay attention to the requirement that the result must be uppercase.

  • question_mark

    Consider iterating the alphabet in reverse to find the greatest letter efficiently.

warning

常见陷阱

外企场景
  • error

    Returning a lowercase letter instead of the required uppercase result.

  • error

    Failing to check both cases properly when letters repeat in the string.

  • error

    Assuming alphabetical order from the string rather than using explicit letter comparison.

swap_horiz

进阶变体

外企场景
  • arrow_right_alt

    Return all letters that appear in both cases in descending order.

  • arrow_right_alt

    Find the smallest English letter present in both cases instead of the greatest.

  • arrow_right_alt

    Handle strings with non-letter characters by filtering out invalid characters before processing.

help

常见问题

外企场景

兼具大小写的最好英文字母题解:哈希·表·结合·string | LeetCode #2309 简单