返回

LeetCode 2309题解:寻找大小写字母字典序最大的字母

后端




题目

给定一个字符串 s ,该字符串由大小写英文字母组成。请你找出并返回字符串 s 中字典序最大的字母。

示例 1:

输入:s = "abaca"
输出:"z"

示例 2:

输入:s = "abc"
输出:"c"

示例 3:

输入:s = "z"
输出:"z"

提示:

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

解法一:使用内置函数

我们可以使用内置函数 max()sorted() 来解决这个问题。首先,我们将字符串 s 中的所有字母转换为大写,然后使用 sorted() 函数对字符串进行排序。最后,我们使用 max() 函数找到排序后的字符串中的最大字母。

def greatest_letter(s):
    """
    :type s: str
    :rtype: str
    """
    # 将字符串转换为大写
    s = s.upper()

    # 对字符串进行排序
    sorted_s = sorted(s)

    # 找到排序后的字符串中的最大字母
    max_letter = max(sorted_s)

    return max_letter

解法二:使用循环遍历字符串

我们还可以使用循环遍历字符串来解决这个问题。我们可以使用两个变量,一个变量 max_letter 用于存储当前找到的最大字母,另一个变量 i 用于遍历字符串。我们从字符串的开头开始遍历,如果当前字母比 max_letter 大,我们就更新 max_letter 的值。

def greatest_letter(s):
    """
    :type s: str
    :rtype: str
    """
    # 将字符串转换为大写
    s = s.upper()

    # 初始化最大字母
    max_letter = 'A'

    # 遍历字符串
    for i in range(len(s)):
        # 如果当前字母比最大字母大,就更新最大字母
        if s[i] > max_letter:
            max_letter = s[i]

    return max_letter

比较

这两种方法的优缺点如下:

  • 解法一:

    • 优点:代码简洁,易于理解。
    • 缺点:效率较低,因为需要对字符串进行排序。
  • 解法二:

    • 优点:效率较高,因为不需要对字符串进行排序。
    • 缺点:代码较长,不易理解。

总结

总之,这两种方法都可以解决这个问题。解法一代码简洁,易于理解,但效率较低。解法二效率较高,但代码较长,不易理解。大家可以根据自己的需要选择合适的方法。