给定两个字符串 s 和 t ,判断它们是否是同构的。
如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。
一行代码,楼下细嗦
return [s.index(i) for i in s] == [t.index(i) for i in t]
[s.index(i) for i in s] 是一个列表推导式 。查找字符第一次出现的位置,将结果存储在列表中。
s.index(i) 它用于查找字符串中某个子字符串 i 第一次出现的位置,并返回其索引值。
例如:
s = "hello,world!"
result = [s.index(i) for i in s]
print(result)
输出结果为:
[0, 1, 2, 2, 4, 5, 6, 4, 8, 2, 10, 11]
变种一。如果输入的其中一个是多单词组成的字符串呢?
例如:
s = "hello world! hello helo"
可以使用split() 函数
sstr = s.split()
print([sstr.index(i) for i in sstr])
变种二。如果两个输入的都是单词长度的字符串呢?
s = "hello world! hello helo"
t = "helo"
print(s.index(t) if t in s else -1)