You are given a text, which contains different english letters and punctuation symbols. You should find the most frequent letter in the text. The letter returned must be in lower case.
While checking for the most wanted letter, casing does not matter, so for the purpose of your search, "A" == "a". Make sure you do not count punctuation symbols, digits and whitespaces, only letters.
If you have two or more letters with the same frequency, then return the letter which comes first in the latin alphabet. For example -- "one" contains "o", "n", "e" only once for each, thus we choose "e".
(给你一个字符串,其中包含了大小字母和一些标点符号,用你的编写的程序,找到出现频率最多的字母,返回值必须为小写字母,如果有两个,或多个出现相同频率的字母,则返回字母表中靠前的其母,例如one,包含"o","n","e",每个都有一次,因此我们将选择"e",作为返回值, a,b,c,d,e,f,g................... e字母相比较其他两个字母,比较靠前。)
Input: A text for analysis as a string.
Output: The most frequent letter in lower case as a string.
Example:
checkio("Hello World!") == "l"
checkio("How do you do?") == "o"
checkio("One") == "e"
checkio("Oops!") == "o"
checkio("AAaooo!!!!") == "a"
checkio("abe") == "a"
1
2
3
4
5
6
How it is used: For most decryption tasks you need to know the frequency of occurrence for various letters in a section of text. For example: we can easily crack a simple addition or substitution cipher if we know the frequency in which letters appear. This is interesting stuff for language experts!
Precondition:
A text contains only ASCII symbols.
0 < len(text) ≤ 105
def checkio(text):
#replace this for solution
return 'a'
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("Hello World!") == "l", "Hello test"
assert checkio("How do you do?") == "o", "O is most wanted"
assert checkio("One") == "e", "All letter only once."
assert checkio("Oops!") == "o", "Don't forget about lower case."
assert checkio("AAaooo!!!!") == "a", "Only letters."
assert checkio("abe") == "a", "The First."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")
我的代码:
def checkio(text):
total = 0
text = text.lower()
letter = text[0]
for i in text:
if i.isalpha(): #判断是不是字母,从而过滤掉空字符串和符号
if text.count(i)>total:
total = text.count(i)
letter = i
elif text.count(i) == total:
if i < letter:
total = text.count(i)
letter = i
return letter
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("How do you do?") == "o", "O is most wanted"
assert checkio("One") == "e", "All letter only once."
assert checkio("Oops!") == "o", "Don't forget about lower case."
assert checkio("AAaooo!!!!") == "a", "Only letters."
assert checkio("abe") == "a", "The First."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")
其他大神代码:
def checkio(text):
letters=''.join(list(filter(str.isalpha , text))).lower()
counter={x:0 for x in sorted(set(letters))}
for i in letters:
counter[i]+=1
return max(counter, key=counter.get)
import numpy as np
def checkio(text):
uniq, cnts = np.unique(np.array([ch for ch in text.lower() if ch.isalpha()]), return_counts=1)
return min(list(zip(uniq, cnts)), key=lambda x: (-x[1], x[0]))[0]
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("Hello World!") == "l", "Hello test"
assert checkio("How do you do?") == "o", "O is most wanted"
assert checkio("One") == "e", "All letter only once."
assert checkio("Oops!") == "o", "Don't forget about lower case."
assert checkio("AAaooo!!!!") == "a", "Only letters."
assert checkio("abe") == "a", "The First."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")
from collections import Counter
def checkio(text):
freqs = Counter([ch for ch in text.lower() if ch.isalpha()])
max_f = freqs[freqs.most_common(1)[0][0]]
return min([letter for letter in freqs.keys() if freqs[letter] == max_f])
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert checkio("Hello World!") == "l", "Hello test"
assert checkio("How do you do?") == "o", "O is most wanted"
assert checkio("One") == "e", "All letter only once."
assert checkio("Oops!") == "o", "Don't forget about lower case."
assert checkio("AAaooo!!!!") == "a", "Only letters."
assert checkio("abe") == "a", "The First."
print("Start the long test")
assert checkio("a" * 9000 + "b" * 1000) == "a", "Long."
print("The local tests are done.")