给定一个只包含大写字母的字符串 S, 请你输出其中出现次数最多的字符。 如果有多个字母均出现了最多次, 按字母表顺序依次输出所有这些字母。
时间: 2024-05-15 18:19:43 浏览: 92
java代码-编写这样一个程序找出字符串“My name is Tom, I come from China.”中的大写字母,并打印输出
思路:
遍历字符串,用一个字典记录每个字符出现的次数。再遍历字典,找到出现次数最多的字符,记录其出现的次数。最后再遍历字典,找到出现次数等于最多次数的字符,添加到结果列表中。
代码实现:
```python
def max_char(s):
count = {}
for c in s:
if c in count:
count[c] += 1
else:
count[c] = 1
max_count = max(count.values())
result = []
for c in sorted(count.keys()):
if count[c] == max_count:
result.append(c)
return result
s = "ABBCDDDDDE"
print(max_char(s)) # ['D']
```
时间复杂度:遍历字符串的时间复杂度为 O(n),遍历字典的时间复杂度为 O(k),其中 k 为不同字符的个数。因为 k ≤ n,所以总时间复杂度为 O(n)。
空间复杂度:需要使用一个字典和一个结果列表,所以空间复杂度为 O(k),其中 k 为不同字符的个数。因为 k ≤ 26,所以空间复杂度为 O(1)。
阅读全文