当前位置: 首页> 房产> 市场 > 同构字符串

同构字符串

时间:2025/7/10 4:10:27来源:https://blog.csdn.net/weixin_55937953/article/details/141156652 浏览次数:0次

给定两个字符串 s 和 t ,判断它们是否是同构的。

如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。

每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。

示例 1:

输入:s = "egg",t = "add"输出:true

示例 2:

输入:s = "foo", t = "bar"输出:false

示例 3:

输入:s = "paper", t = "title"输出:true
#include <stdio.h>
#include <stdbool.h>
#include <string.h>bool isIsomorphic(char* s, char* t)
{if(strlen(s) != strlen(t)){return false;//如果两个字符串长度不相同,直接返回错误}for(int i = 1;i < strlen(s);i++)//i从1开始循环{int flag = 0;//设置一个标志int s_t = 0;//s字符串的当前位置下标int t_t = 0;//t字符串的当前位置下标for(int j = i - 1;j >= 0;j--)//从i-1到0一一遍历{if(s[j] == s[i]){s_t = j;flag = 1;//如果某个s[j] == s[i],将标志设为1,s的下标改为j}if(t[j] == t[i]){t_t = j;flag = 1;//同时检测t字符串,如果某个t[j] == t[i],将标志设为1,t的下标改为j}if(flag == 1 && s_t == t_t)//双重判断,如果都符合,可以提前跳出循环{break;}}if(s_t != t_t)//最后一轮循环后,如果下表不相同,返回错误{return false;}}return true;//否则返回正确
}int main()
{char ptr[] = "alpkop";char str[] = "pdgfyg";printf("%d\n",isIsomorphic(ptr, str));return 0;
}

 

关键字:同构字符串

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: