a224
輸入說明 :
一筆測試資料一行,包含許許多多但總數不超過 1000 個的大小寫英文字母和標點符號。 不可思議的是,裡面不會有任何空白字元。
輸出說明 :
如果重新安排順序後,有辦法讓這一堆英文字母變成迴文的話,輸出「yes !」,否則輸出「no...」。 注意,大寫和小寫字母視為相同,即 A 和 a 是一樣的,並且,請忽視所有非英文字母的字元。
這題我原本的想法是(參考網路上的),如果一個字串是迴文,那你某個字母是奇數次的數量只能是1個 也就是下面的寫法,但是現在看,就算你數量對,排列的結果不是迴文,那還是錯的
所以真正的作法應該是,把讀進來的字串,一個字元字元的判斷是不是字母(是其他符號就捨棄),並且轉成小寫,存到另一個陣列,然後對那個陣列作迴文的判斷(a022),
#include<stdio.h>
#include<string.h>
int main()
{
int j,i,k;
char s[1001]={'\0'};
while(scanf("%s",s)!=EOF)
{
int odd=0;
int abc[26]={0}; //算輸入的字串a~z大小寫每一個有多少個
for(j=0;j<26;j++){
for(i=0;i<strlen(s);i++){
if(s[i]==65+j||s[i]==97+j){
abc[j]+=1;
}
}
}
for(k=0;k<26;k++)
{
if(abc[k] %2==1)
{odd ++ ;}
}
if(odd>=2)
printf("no...\n");
else
printf("yes !\n");
}
return 0;
}