在Python中确定两个字符串是否相似的程序
假设我们有两个字符串s和t,我们必须检查s和t是否相似。我们可以说,如果我们可以使用以下操作之一从一个字符串获得另一个字符串,则两个字符串是相似的−
- 交换任意两个现有字符。(例如,将abcde交换为aecdb)
-
将一个现有字符的每个出现更改为另一个现有字符,并对其他字符执行相同操作。(例如,aacabb->bbcbaa(这里将所有a转换为b,并反之亦然))
我们可以在任一字符串上多次使用操作。
因此,如果输入为s =“zxyyyx”,t =“xyyzzz”,则输出将为true,因为我们可以通过3个操作从s得到t。 (“zxyyyx” ->“zxxyyy”),“zxxyyy” – >“yxxzzz”,以及(“yxxzzz” ->“ xyyzzz”)。
为了解决这个问题,我们将采取以下步骤−
- 如果s和t具有任何不常见字符,那么
- return False
- a:= s中所有字符的频率值列表
-
b:= t中所有字符的频率值列表
-
对列表a进行排序
-
对列表b进行排序
-
如果a与b不同,则
- return False
- return True
例子
让我们看以下实现以更好地理解−
from collections import Counter
def solve(s,t):
if set(s)! = set(t):
return False
a = list(Counter(s).values())
b = list(Counter(t).values())
a.sort()
b.sort()
if a! = b:
return False
return True
s ="zxyyyx"
t =“xyyzzz”
print(solve(s,t))
输入
"zxyyyx",“xyyzzz”
输出
True