2023年8月1日 星期二

[1657] Determine if Two Strings Are Close

和預想的沒錯,算出字母出現的數字,都一樣即可!

有多加一個break 當出現次數是 0 的時候就不用做了,因為出現次數sorting 過了
就比全部都比對的快一些 (那不是廢話嗎XD)
覺得開薰

int comp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}

bool closeStrings(char * word1, char * word2){
int count1[26]={0};
int count2[26]={0};
int l1=strlen(word1);
int l2=strlen(word2);
if (l1 != l2)
return false;
for (int i=0;i<l1;i++)
{
count1[word1[i]-'a']++;
count2[word2[i]-'a']++;
}
for (int i=0;i<26;i++)
{
if ((count1[i]== 0 && count2[i]>0) || (count2[i]== 0 && count1[i]>0) )
return false;
}

qsort(count1,26, sizeof(int), comp);
qsort(count2,26, sizeof(int), comp);
for (int i=25;i>=0;i--)
{
if (count1[i]!=count2[i])
return false;
if (count1[i]==0)
break;
}

return true;
}

沒有留言:

張貼留言