给定两个字符串 s 和 t,判断它们是否是同构的。
如果 s 中的字符可以被替换得到 t ,那么这两个字符串是同构的。
所有出现的字符都必须用另一个字符替换,同时保留字符的顺序。两个字符不能映射到同一个字符上,但字符可以映射自己本身。
示例 1:
输入: s = "egg", t = "add"
输出: true
示例 2:
输入: s = "foo", t = "bar"
输出: false
示例 3:
输入: s = "paper", t = "title"
输出: true
说明:
你可以假设 s 和 t 具有相同的长度。
这道题呢,就是,看同构,你可以用数字来进行替换好了,感觉不错。
一次通过,真不错。
class Solution {
void process(string &s){
int n = s.length();
char *ar = new char[n];
int ar_n = 0;
// 将字母替换成数字
for(int i=0; i<n; i++){
// 检查是否存在,如果存在,就不用赋予新的值了
bool is_exist = false;
int j;
for(j=0; j<ar_n; j++){
if(s[i] == ar[j]){ // 证明存在
is_exist = true;
break;
}
}
if(is_exist){
s[i] = j+'0';
}
else{ // 如果不存在的话
ar[ar_n] = s[i];
s[i] = ar_n+'0';
ar_n++;
}
}
}
public:
bool isIsomorphic(string s, string t) {
process(s);
process(t);
if(s == t) return true;
else return false;
}
};
本文介绍了一种用于判断两个字符串是否为同构的算法。同构字符串意味着一个字符串可以通过字符替换转换为另一个字符串,同时保持字符顺序不变。文章详细解释了同构的概念,并提供了具体的示例和代码实现。

3412

被折叠的 条评论
为什么被折叠?



