class Solution:
def canConvert(self, str1: str, str2: str) -> bool:
if str1 == str2:
return True
s = set(str2)
if len(s) == 26:
'''
字符串2把所有字符种类26种都占满了,字符串1只有可能一开始也是占满26种字符才有转成功的可能性
但是字符串1只要变换了第一次,总字符种类数一定变成25了,后面不管怎么变,字符种类数都是非递增
的,不可能转换成功
'''
return False
'''
字符串1里面相同数值的位置不管怎么变化最后一开始数值相等的位置最后数值肯定还是相等的,所以str1里面
数值相同的位置,str2里面对应位置数值也必须相同,否则不可能转换,能保证这个条件最后就一定可以转成功
'''
m = {}
for i, ch in enumerate(str1):
if ch not in m:
m[ch] = []
m[ch].append(i)
for pos_list in m.values():
for i in range(len(pos_list)):
for j in range(i+1, len(pos_list)):
if str2[pos_list[i]] != str2[pos_list[j]]:
return False
return True