LeetCode : Submission Details
题目原意:给出两个字符串,判断它们的结构是否相同
这道题唯一的难度,就是发现什么样的字符串才是符合相同结构。如下所示:
foo 与 acc 结构相同; abc 与efg 结构相同 ; picgpf 与 ascfde 结构不同
总而言之,
foo 那么字符 ‘f’ 与’a’,’o’与’c’ 是绑定在一起的,下次它们中任何一个出现的时候, 我们只需要判断另一个字符是不是它原先绑定acc 的那个即可。
题目原意:给出两个字符串,判断它们的结构是否相同
这道题唯一的难度,就是发现什么样的字符串才是符合相同结构。如下所示:
foo 与 acc 结构相同; abc 与efg 结构相同 ; picgpf 与 ascfde 结构不同
总而言之,
foo 那么字符 ‘f’ 与’a’,’o’与’c’ 是绑定在一起的,下次它们中任何一个出现的时候, 我们只需要判断另一个字符是不是它原先绑定acc 的那个即可。
代码如下(leetCode 测得运行时间为0ms):
int isIsomorphic(char *s, char *t)
{
unsigned int i = 0;
char sLen[256] = {0};
char tLen[256] = {0};
if (strlen(s) != strlen(t))
{
return 0;
}
while(s[i] != 0)
{
if (sLen[s[i]] == 0 && tLen[t[i]] == 0) //!< 若字符第一次出现,则保存另一个字符的值,绑定
{
sLen[s[i]] = t[i];
tLen[t[i]] = s[i];
}
else if(sLen[s[i]] != t[i] || tLen[t[i]] != s[i]) //!< 若有字符不是第一次出现,判断是不是原先绑定的字符
return 0;
++i;
}
return 1;
}