检查字符串的两半是否在Python中具有相同的字符集
仅给定一个小写字符的字符串,任务是检查是否可以从中间拆分字符串,这将产生具有相同字符和每个字符频率相同的两半。如果给定字符串的长度是奇数,则忽略中间元素并检查其余元素。
例子:
Input : abbaab
Output : NO
The two halves contain the same characters
but their frequencies do not match so they
are NOT CORRECT
Input : abccab
Output : YES
此问题已有解决方案,请参阅检查字符串的两半是否具有相同的字符集链接。我们将使用字典比较在Python中快速解决这个问题。
方法很简单:
- 将字符串分成两部分并使用 Counter(iterator) 方法将两部分转换为字典,每个字典包含它的字符作为键和频率作为值。
- 现在比较这两个字典。在Python中,我们可以使用==运算符比较两个,它首先检查两个字典的键是否相同,然后检查每个键的值。如果一切都相等,则意味着两个字典是相同的。
# Function to Check if both halves of
# the string have same set of characters
from collections import Counter
def checkTwoHalves(input):
length = len(input)
# Break input string in two parts
if (length % 2 != 0):
first = input[0:length // 2]
second = input[(length // 2) + 1:]
else:
first = input[0:length // 2]
second = input[length // 2:]
# Convert both halves into dictionary and compare
if Counter(first) == Counter(second):
print ('YES')
else:
print ('NO')
# Driver program
if __name__ == "__main__":
input = 'abbaab'
checkTwoHalves(input)
输出:
NO