c语言写程序判断两串字符串是否完全一样(anagram)

anagram就是两个单词,字母完全一样,但顺序不一样。求一个完整的程序,判断两串字符串是否是anagram。

比如,tom marvolo riddle和 i am lord voldemort这两串字符就是anagram。空格的数量不影响判断。例如第一串字符tom marvolo riddle中有两个空格,而第二串字符i am lord voldemort中有三个空格,但这两串字符串的字母完全一样只是顺序不一样,这两个仍然算一对anagram。

要求:1)不需要用到printf,直接在函数中写argv[1] argv[2]
2)如果用户运行时没有输入两串字符串,要打印出一条错误提示
3)如果输入的两串字符串是anagram,打印成功提示,如果不是,打印错误提示
4)两串字符串只包含小写字母和空格

先跪谢拉

/*
这个算法我也同时处理了大小写字母,这取决于你的输入是的小写就是

我觉得这样更好,可以大小写兼顾

*/
#include <string.h>
#include <stdlib.h>
#include <stdio.h>

void main(int argc, char *argv[])
{
/*
cnt[0..25][0..1]

0:a, 1:b, ... 25:z
0: lower, 1: upper

*/

int cnt1[26][2], cnt2[26][2];

int c, len1, len2;

if(argc == 3){
/* Initliase the counters */
for(c=0;c<26;c++){
cnt1[c][0] = 0;
cnt1[c][1] = 0;
cnt2[c][0] = 0;
cnt2[c][1] = 0;
}

len1 == strlen(argv[1]) ;
len2 == strlen(argv[2]) ;

/* Process String1 */

for(c=0; c<len1; c++){
if(*(arv[1]+c) >= 'a' && *(arv[1]+c) <= 'z')
cnt1[*(argv[1]+c) - 'a'][0]++;
else if(*(arv[1]+c) >= 'A' && *(arv[1]+c) <= 'Z')
cnt1[*(argv[1]+c) - 'A'][1]++;
else{}

}

/* Process String2 */

for(c=0; c<len2; c++){
if(*(arv[2]+c) >= 'a' && *(arv[2]+c) <= 'z')
cnt2[*(argv[2]+c) - 'a'][0]++;
else if(*(arv[2]+c) >= 'A' && *(arv[2]+c) <= 'Z')
cnt2[*(argv[2]+c) - 'A'][1]++;
else{}

}

/* Compare the couters*/

for(c=0;c<26;c++){
if(cnt1[c][0] != cnt2[c][0] || cnt1[c][1] != cnt2[c][1]){

printf("fail\n");

return;

}
}

if(c==26) printf("success\n");

}

else{
printf("Input Error\n");

}

}追问

运行过了,不对诶,不管输入什么结果都是success

追答

#include
#include
#include
void main(int argc, char *argv[])
{
/*
cnt[0..25][0..1]

0:a, 1:b, ... 25:z
0: lower, 1: upper

*/
int cnt1[26][2], cnt2[26][2];
int c, len1, len2;

if(argc == 3){
/* Initliase the counters */
for(c=0;c= 'a' && *(argv[1]+c) = 'A' && *(argv[1]+c) = 'a' && *(argv[2]+c) = 'A' && *(argv[2]+c) <= 'Z')
cnt2[*(argv[2]+c) - 'A'][1]++;
else{}

}

/* Compare the couters*/

for(c=0;c<26;c++){
if(cnt1[c][0] != cnt2[c][0] || cnt1[c][1] != cnt2[c][1]){

printf("fail\n");
return;

}
}

if(c==26) printf("success\n");

}

else{
printf("Input Error\n");

}
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-07
indexof,返回值大于0就存在 。小于0就不存在
相似回答