-20 判断两个字符串是否为变位词 (10 分)
如果一个字符串是 另一个字符串的重新排列组合,那么这两个字符串互为变位词。比如,”heart”与”earth”互为变位 词,”Mary”与”arMy”也互为变位词。
输入格式:
第一行输入第一个字符串,第二行输入第二个字符串。
输出格式:
输出“yes”,表示是互换词,输出“no”,表示不是互换词。
输入样例1:
在这里给出一组输入。例如:
Mary
arMy
结尾无空行
输出样例1
在这里给出相应的输出。例如:
yes
结尾无空行
输入样例2:
在这里给出一组输入。例如:
hello 114
114 hello
结尾无空行
输出样例2:
在这里给出相应的输出。例如:
yes
结尾无空行
输入样例3:
在这里给出一组输入。例如:
Wellcom
mocllew
结尾无空行
输出样例3:
在这里给出相应的输出。例如:
no
#include <stdio.h>
#include <string.h>
int chong(char s1[],char s2[],int l)//判断两个数组中每一个元素重复的次数是否相等
{
int i,j;
for(i=0;i<l;i++)
{
int n=0,x=0;
for(j=0;j<l;j++)
{
if(s1[i]==s1[j])x++;
}
for(j=0;j<l;j++)
{
if(s1[i]==s2[j])n++;
}
if(x!=n)return 0;
}
return 1;
}
int same(char s1[],char s2[],int l)//判断第一个数组中每个元素是否都能在第二数组中找到相同的
{
int x=0,i,j;
for(i=0;i<l;i++)
{
for(j=0;j<l;j++)
{x=0;
if(s1[i]==s2[j]){x=1;break;}
}
if(x==0)return 0;
}
return 1;
}
int main()
{
int L1,L2;
char crr[1000],drr[1000];
gets(crr);
gets(drr);
L1=strlen(crr);
L2=strlen(drr);
if(L1!=L2)
printf("no");
else{
if(same(crr,drr,L1)&&chong(crr,drr,L1))
printf("yes");
else
printf("no");}
return 0;
}