返回
LeetCode 2309题解:寻找大小写字母字典序最大的字母
后端
2023-10-29 13:20:09
题目
给定一个字符串 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
比较
这两种方法的优缺点如下:
-
解法一:
- 优点:代码简洁,易于理解。
- 缺点:效率较低,因为需要对字符串进行排序。
-
解法二:
- 优点:效率较高,因为不需要对字符串进行排序。
- 缺点:代码较长,不易理解。
总结
总之,这两种方法都可以解决这个问题。解法一代码简洁,易于理解,但效率较低。解法二效率较高,但代码较长,不易理解。大家可以根据自己的需要选择合适的方法。