📌  相关文章
📜  检查字符串的两半是否在Python中具有相同的字符集

📅  最后修改于: 2022-05-13 01:55:09.025000             🧑  作者: Mango

检查字符串的两半是否在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中快速解决这个问题。

方法很简单:

  1. 将字符串分成两部分并使用 Counter(iterator) 方法将两部分转换为字典,每个字典包含它的字符作为键和频率作为值。
  2. 现在比较这两个字典。在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