gpt4 book ai didi

python - 查找字符在字符串中的次数并返回。如果有多个相同数量的字母,则最早按字母顺序返回

转载 作者:行者123 更新时间:2023-11-28 22:08:07 25 4
gpt4 key购买 nike

这段代码应该返回字符串中出现频率最高的字符。如果多个字符满足此要求,则函数应按字母顺序返回最早的字符。例如,如果c和d都是最常用的字母,那么答案是c。
例如,给定一个字符串:
S=“你好”
函数应该返回“l”。它在S中出现两次。没有其他字符出现得如此频繁。
这是我到目前为止的代码,但有错误。

def solution(S):

occurrences = [0] * 26

for i in range(len(S)):
occurrences[ord(S[i]) - ord('a')] += 1

best_char = 'a'
best_res = 0

for i in range(1, 26):
if occurrences[i] >= best_res:
best_char = chr(ord('a') + i)
best_res = occurrences[i]

return best_char

最佳答案

代码有两个问题:
您使用的是ord('a'),因此如果出现大写字母,它将失败。
在您的第二个循环中,您从a-z进行迭代,并希望保留第一个出现的max字符,根据您的逻辑,该字符是错误的
正如我在问题中提到的,你的代码有问题。我建议你这样做。

S="haaellopleee"
#It will pick a and A as different characters
#If you want to treat both a and A as same, consider using lower()
def solution(S):
dic={}
max_val=0
out_=[]
for i in S:
dic[i]=dic.get(i,0)+1
if(dic[i]>max_val):
out_=[]
out_.append(i)
max_val=dic[i]
elif(dic[i]==max_val):
out_.append(i)
print(min(out_))

solution(S)

关于python - 查找字符在字符串中的次数并返回。如果有多个相同数量的字母,则最早按字母顺序返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58869157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com