编写一个Python程序来判断两个给定的字符串是否是错位词。
如果两个字符串具有相同的字符,但顺序不同,则被认为是彼此的错位词。 例如,restful
和fluster
是错位词。
- 定义函数
are_anagrams()
,有两个参数:string1
和string2
。 - 在函数内,如果两个字符串是错位词,则返回
True
,否则返回False
。
示例输入
Listen Silent
示例输出
True
该程序不区分大小写,并忽略字符串中的任何空格。 例如例如,Listen
和silent
也是错位词。
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,即错位数了。