异位词:字串s和t中每个字符出现的次数相同就是异位词,否则就不是。
事例:
输入:s="bnhuid" ,t="hnbiud"
输出:TRUE
输入:s="bad", t="bed"
输出:FALSE
我的思路:将第一个字符遍历将字符出现次数放入一个26位的数组中并计数,再对第二个字符串遍历,查询在数组中是否存在,若不存在,则直接返回FALSE,若存在就对应字符出现次数减1,减到0时,删除这个字符。最后看数组中的计数如果count不等于0则返回FLASE,等于0返回TRUE。
C完整代码实现
#include<stdio.h>
#include<stdlib.h>
int word(char *s,char *t){
int count[26]={0},i;
for(i=0;s[i]!='\0';i++){
count[s[i]-'a']++;}
for(i=0;t[i]!='\0';i++){
count[t[i]-'a']--;}
for(i=0;i<26;i++){
if(count[i]!=0){
return 0;}
return 1;}
}
int main(){
int n;
char s[26],t[26];
printf("输入字符");gets(s);
printf("输入字符");gets(t);
n=word(s,t);
if (n==1)
printf("TRUE");
else
printf("FLASE");
}