0
我無法找到下面的anagram程序中的錯誤。在anagram程序中找不到錯誤
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int is_anagram(char* s1, char* s2){
int i;
char count[256] = {0};
if(NULL == s1 || NULL == s2) return 0;
for(i = 0; (s1[i] && s2[i]); i++){
count[s1[i]]++;
count[s2[i]]--;
}
if(s1[i] && s2[i]) return 0;
for(i = 0; i < 256; i++)
if(count[i]) return 0;
return 1;
}
int main(){
int i;
char* cases = malloc(10);
char* str = malloc(500000);
char* str1;
char* str2;
if(NULL == cases || NULL == str) return 0;
fgets(cases,10,stdin);
for(i = 0; i < atoi(cases); i++){
fgets(str,500000,stdin);
str1 = strtok(str," ");
str2 = strtok(NULL," ");
if(NULL == str1 || NULL == str2){
printf("\nNO");
return 0;
}
if(is_anagram(str1,str2)){
printf("\nYES");
}
else{
printf("\nNO");
}
}
free(str);
return 0;
}
我試圖驗證輸入的數字是否是一個anagram或不。
我輸入查詢3串findour其是否字謎與否
I/P: ABC美國廣播公司 - 是 ABC BA - NO A1B2C3 ABC123 - YES
我不能讓正確的O/P爲一些I/P的像第二個字符串與很多空格。 如何優化這進一步
你爲什麼認爲它效率不高?哪些具體的代碼? – SMA 2014-12-06 11:57:24
爲什麼你想優化不正確的代碼? – luk32 2014-12-06 12:01:33
如果它沒有爲某些輸入生成正確的結果,也許應該在調試器下運行它,以便處理其中一個失敗的輸入。 – 2014-12-06 12:35:46