在保留字符顺序的同时,必须将所有出现的字符替换为另一个字符。没有两个字符可以映射到同一字符,但是一个字符可以映射到自身。
因此,如果输入像s =“ egg”,t =“ add”,则输出为true,因为e可以映射到a,g可以映射到d。
为了解决这个问题,我们将遵循以下步骤-定义大小为256的数组arr并用-1填充
定义访问的数组,大小为256,并用0填充
定义大小为256的visited1数组,并填充0
对于初始化i:= 0,当i
visit1 [t [i]]:= 1
arr [s [i]]:= t [i]-'a'的ASCII码
如果arr [s [i]]不等于t [i]-'a'的ASCII,则-
返回假如果Visited [s [i]]与1相同或Visited1 [t [i]]与1相同,则-
除此以外
返回真
例
让我们看下面的实现以更好地理解-#include
using namespace std;
class Solution {
public:
bool isIsomorphic(string s, string t) {
vector arr(256, -1);
vector visited(256, 0);
vector visited1(256, 0);
for (int i = 0; i
if (visited[s[i]] == 1 || visited1[t[i]] == 1) {
if (arr[s[i]] != t[i] - 'a') {
return false;
}
}
else {
visited[s[i]] = 1;
visited1[t[i]] = 1;
arr[s[i]] = t[i] - 'a';
}
}
return true;
}
};
main(){
Solution ob;
cout <
}
输入值"sky","fry"
输出结果1