我理解以下代码来查找字符串是否同构。该代码使用两个哈希值s_dict
and t_dict
分别。我假设字符串的长度相同。
def isIsomorphic(s, t):
s_dict = {}
t_dict = {}
for i in range(len(s)):
if s[i] in s_dict.keys() and s_dict[s[i]] != t[i]:
return False
if t[i] in t_dict.keys() and t_dict[t[i]] != s[i]:
return False
s_dict[s[i]] = t[i]
t_dict[t[i]] = s[i]
return True
现在,如果我修改上面的代码,使得只有一个散列s_dict()
使用,那么它也为我有限的测试用例提供了所需的结果。修改后的代码如下:
def isIsomorphic(s, t):
s_dict = {}
for i in range(len(s)):
if s[i] in s_dict.keys() and s_dict[s[i]] != t[i]:
return False
s_dict[s[i]] = t[i]
return True
上述修改后的代码在哪些测试用例中会失败?我对同构字符串的理解是错误的吗?
一个简单的例子,您的代码不适用于 s='ab',t='aa'。
基本上你必须同时拥有两种方式才能同构。您的代码仅检查 t 是否可以从 s 修改,但反之则不然。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)