Python字典,设置和计数器来检查频率是否可以变得相同
给定一个包含较低字母字符的字符串,我们需要从该字符串中删除最多一个字符,使得每个不同字符的频率在字符串中变得相同。
例子:
Input : str = “xyyz”
Output : Yes
We can remove character ’y’ from above
string to make the frequency of each
character same.
Input : str = “xyyzz”
Output : Yes
We can remove character ‘x’ from above
string to make the frequency of each
character same.
Input : str = “xxxxyyzz”
Output : No
It is not possible to make frequency of
each character same just by removing at
most one character from above string.
此问题已有解决方案,请参考检查是否所有字符的频率可以通过一个删除链接变得相同。我们将在Python中快速解决这个问题。方法很简单,
- 我们需要计算字符串中每个字母的频率,为此我们将使用 Counter(input) 方法,它返回一个字典,其中字符作为键,它们各自的频率作为值。
- 现在提取每个字符的频率列表,并将这些值推Python的 Set() 数据结构中。
- 由于 set 包含唯一值,因此如果 set 的大小为 1,则表示所有字符的频率相同,如果 set 的大小为 2,则检查第一个元素的值是否为 1(如果为 1,则我们可以通过删除来使频率相同最多一个字符,否则不可能)。
# Function to Check if frequency of all characters # can become same by one removal from collections import Counter def allSame(input): # calculate frequency of each character # and convert string into dictionary dict=Counter(input) # now get list of all values and push it # in set same = list(set(dict.values())) if len(same)>2: print('No') elif len (same)==2 and same[1]-same[0]>1: print('No') else: print('Yes') # now check if frequency of all characters # can become same # Driver program if __name__ == "__main__": input = 'xxxyyzzt' allSame(input)
输出:
No