要求:
编写一个程序,计算从两个字符串中移除的最少字母数,使它们成为变位词。
变位词是指可以通过重新排列字符而形成的字符串。例如,dab 是 bad 的变位词。
- 定义函数
min_removals_to_anagram()
,有两个参数:str1
和str2
。 - 在函数内,计算从两个字符串中移除的最小字母数,使它们成为变位词。
示例输入
cab base
示例输出
3
解释: 需要移除cab 中的c,base 中的s 和 e。最小移除数3,成为变位词ab 和 ba
代码:
def min_removals_to_anagram(str1, str2):
# 统计字符出现次数
count1 = {}
count2 = {}
for char in str1:
count1[char] = count1.get(char, 0) + 1
for char in str2:
count2[char] = count2.get(char, 0) + 1
# 计算移除的最少字母数
removals = 0
for char in count1:
if char not in count2:
removals += count1[char]
else:
count_diff = count1[char] - count2[char]
removals += abs(count_diff)
for char in count2:
if char not in count1:
removals += count2[char]
return removals
# 获取输入
str1 = input()
str2 = input()
# 调用函数,输出结果
print(min_removals_to_anagram(str1, str2))