Python中的同构字符串



这是我的代码:

def isIso(x,y):
if len(x) != len(y):
return False
for i in range(len(x)):
count = 0
if x.count(x[i]) != y.count(y[i]):
return False
return True

为什么这个问题的所有在线解决方案都涉及地图或字典?我想知道为什么每个人似乎都把这个问题的解决方案过于复杂。这是时间复杂性的问题吗?这其中的时间复杂性是n,这并不理想——人们使用地图/词典是因为时间复杂性更好吗?

这一过程的时间复杂度为n,这不是理想的

不!你的时间复杂度不是n的数量级,而是n2的数量级。

str.count必须在每次n个操作时循环遍历整个字符串。你叫它n次。因此,结果是n*n=n2复杂度,比将计数存储在字典中并查找要糟糕得多。

Python中最简单的实现是:

from collections import Counter
def is_isomoprhic(x, y):
xc, yc = Counter(x), Counter(y)
return all(xc[a] == xc[b] for a, b in zip(x, y))

您将找到的最简单的解决方案---谢谢!!!

len(set(zip(list(s), list(s1)))) == len(set(s))

使用maketrans和translate。

def is_isometric(x: str, y: str) -> bool:
trans = str.maketrans(x, y)
return x.translate(trans) == y

相关内容

  • 没有找到相关文章

最新更新