这是我的代码:
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