Python中的同构字符串

问题描述

这是我的代码

df['Value $'] = df['Value $'].replace({'\$|,': ''},regex=True)
df['Value $'] = df['Value $'].astype(dtype=np.float64)

为什么这个在线问题的所有解决方案都涉及映射或字典?我想知道为什么每个人似乎都在使该问题的解决方案过于复杂。这是时间复杂度的事情吗?时间复杂度是n,这不是理想的-人们会因为使用更好的时间复杂度而使用地图/词典吗?

解决方法

此方法的时间复杂度为n,这不理想

不!您的时间复杂度不是n的数量级。顺序为n 2

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

Python中最简单的实现(约为n次)是:

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))
,

使用 maketranstranslate

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