同构字符串的判定

给定两个长度相同的字符串,判定他们是否是同构字符串。

同构字符串:指源字符串中每个字符串都可以被另一个字符替代,其中相同的字符一定要被同一个字符替代,例如:

s="egg",t="add"        s与t是同构字符串

s="foo",t="bar"          s与t不是同构字符串

s="paper",t="title"      s与t是同构字符串

实现函数bool isIsomorphic(char *s,char *t);

#include <stdio.h>
#include <head.h>
#include <stdbool.h>

int find(char *str,int pos){
	int len=strlen(str);
	for(int i=0;i<len;i++){
		if(str[pos]==str[i]){
			return i;
		}
	}
	return -1;
}
bool isIsomorphic(char* s, char* t) {
	int len1=strlen(s);
	int len2=strlen(t);
	if(len1!=len2){
		printf("字符串长度不匹配,请重试!\n");
		return false;
	}
	for(int i=0;i<len1;i++){
		if(find(s,i)!=find(t,i)){
			return false;
		}
	}
	return true;
}

int main(int argc, const char *argv[])
{
	if(isIsomorphic("abc","foo")){
		printf("true\n");
	}else{
		printf("false\n");
	}
	return 0;
}

这是我想出来的一种思路,也许会有一些错误,希望看过的大佬可以分享一下看法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我只是个小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值