Palindrome
题目描述
给你一个只含有英文小写字母的字符串,你可以无限次交换任意相邻的两个字符,请问是否能将字符串变为回文串。 所谓“回文串”,就是字符串从左到右读,和从右到左读是一样的字符串。
输入
存在不超过1000个样例。 每行一个字符串,不超过1000个字符。
输出
每行输出一个样例的结果,如果原串可以变成回文串,输出"Yes",否则输出"No"。
样例输入
abcd aaaa
样例输出
No Yes
#include<stdio.h>
#include<string.h>
int change(char arr[]) ;
int main()
{
char a[1001]={0};
while(scanf("%s",a)!=EOF)
{
int flag=change(a);
if(flag==1)
{
printf("Yes\n");
}
else
printf("No\n");
}
return 0;
}
int change(char arr[])
{
int len=strlen(arr);
int cnt=0;
int b[26]={0};
for (int i = 0; i < len; i++) {
b[arr[i] - 'a']++;
}
for(int i=0;i<26;i++)
{
if(b[i]%2!=0)
{
cnt++;
}
}
if(len%2!=0)
{
if(cnt==1)
return 1;
}
else
{
if(cnt==0)
return 1;
}
return 0;
}
/*
计算一个字符串里某个字母出现的次数
for(int 1=0;i<len;i++)
{
a[arr[i]-'a']++;
}
*/