Bootstrap

python错位词,计数法

编写一个Python程序来判断两个给定的字符串是否是错位词。

如果两个字符串具有相同的字符,但顺序不同,则被认为是彼此的错位词。 例如,restfulfluster是错位词。

  • 定义函数are_anagrams(),有两个参数:string1string2
  • 在函数内,如果两个字符串是错位词,则返回True,否则返回False

示例输入

Listen Silent

示例输出

True

该程序不区分大小写,并忽略字符串中的任何空格。 例如例如,Listensilent也是错位词。

def are_anagrams(string1, string2):
    #先将字符串转换为小写并去除空格
    string1=string1.lower().replace(' ','')
    string2=string2.lower().replace(' ','')
    #比较两个字符串长短,若不同则不是错位数,返回False
    if len(string1) != len(string2):  
          return False  
    # 使用字典来计数每个字符出现的次数  
    char_count = {}  
      
    # 遍历第一个字符串,统计字符出现次数  
    for char in string1:  
        if char in char_count:  
            char_count[char] += 1  
        else:  
            char_count[char] = 1  
      
    # 遍历第二个字符串,减少对应字符的计数  
    for char in string2:  
        if char in char_count:  
            char_count[char] -= 1  
        else:  
            # 如果字符在第一个字符串中不存在,则不是错位词  
            return False  
      
    # 检查所有字符的计数是否都归零  
    for count in char_count.values():  
        if count != 0:  
            return False  
        else:
            return True
    # 如果所有字符的计数都归零,则是错位词  
      

# 获取输入string1 和 string2 
string1 = input()
string2 = input()
# 调用函数并打印结果 
print(are_anagrams(string1, string2))

总体思路是先将第一个字符串中每个元素都计数累加,然后看每个元素都在不在第二个字符串,如果在就计数累减,这样如果元素个数一致那么就必然会为0,即错位数了。

;