Given two strings str1
and str2
of the same length, determine whether you can transform str1
into str2
by doing zero or more conversions.
In one conversion you can convert all occurrences of one character in str1
to any other lowercase English character.
Return true
if and only if you can transform str1
into str2
.
Example 1:
Input: str1 = "aabcc", str2 = "ccdee"
Output: true
Explanation: Convert 'c' to 'e' then 'b' to 'd' then 'a' to 'c'. Note that the order of conversions matter.
Example 2:
Input: str1 = "leetcode", str2 = "codeleet"
Output: false
Explanation: There is no way to transform str1 to str2.
Note:
1 <= str1.length == str2.length <= 10^4
- Both
str1
andstr2
contain only lowercase English letters.
--------------------------------------------------------------------
思路不难,但是不容易写对,坑就是需要一个没有被占用的字母
class Solution:
def canConvert(self, str1: str, str2: str) -> bool:
dic = {}
if (str1 == str2):
return True
l = len(str1)
for i in range(l):
if (str1[i] != str2[i]):
if str1[i] in dic and dic[str1[i]] != str2[i]:
return False
else:
dic[str1[i]] = str2[i]
# bug1: return True if len(dic) < 26 or len(set(dic.values())) < 26 else False
return len(set(str2)) < 26