在 Python 3.x 中使用 Counter() 查找使两个字符串成为乱序的最少字符删除量

pythonserver side programmingprogramming更新于 2025/10/26 2:20:17

在本文中,我们将学习如何使用 Python 3.x 或更早版本中的 counter() 函数将字符串变成全字母字母表。为此,我们可以从输入字符串中删除任何字符。我们还将找到使字符串成为乱序所需删除的此类字符数。

当两个字符串以任意随机顺序包含相同类型的字母时,它们被称为彼此的乱序。

counter() 方法存在于 Python 中的 collection 模块中。先决条件是导入 collections 模块以使用 counter() 函数。

算法

1. 使用 collections 模块中提供的 Counter(inp_str) 将输入字符串转换为字典类型,该字典类型以字符为键,以字符频率为值。
2. 计算从输入字符串转换而来的两个字典中的键的总数和公共键的数量。
3. 如果没有检测到公共键,则意味着需要从两个输入字符串中删除(两个字典的长度总和)个字符。
4. 否则 (max(两个字典的长度) – 可用的公共键数) 将给出需要删除的字符数

collections.Counter 是一个字典子类,用于确保解释器自动计算字母。我们实际上不需要创建子字符串或手动检查它们是否是字谜。

示例

# 两个字符串变成字谜
from collections import Counter
def convertAnagram(str_1, str_2):
   # 将字符串转换为字典类型
   dict_1 = Counter(str_1)
   dict_2 = Counter(str_2)
   keys_1 = dict_1.keys()
   keys_2 = dict_2.keys()
   # 计算两个键列表中键的数量
   count_1 = len(keys_1)
   count_2 = len(keys_2)
   # 将一对键转换为集合以查找公共键
   set_1 = set(keys_1)
   commonKeys = len(set_1.intersection(keys_2))
   if (commonKeys == 0): # 未找到公共项,即所有项均不同
      return (count_1 + count_2)
   else: # 输入中的某些元素已匹配
      return (max(count_1, count_2)-commonKeys)
str_1 ='Tutorials'
str_2 ='sTutalori'
str_3='Point'
print (convertAnagram(str_1, str_2))
print (convertAnagram(str_3, str_2))

输出

0
6

结论

在本文中,我们学习了如何通过计算维持 Python 2.x 所需的字谜关系所需的字符数来使两个字符串相互字谜化。


相关文章


有用资源