Palindrome
题目描述
给你一个只含有英文小写字母的字符串,你可以无限次交换任意相邻的两个字符,请问是否能将字符串变为回文串。 所谓“回文串”,就是字符串从左到右读,和从右到左读是一样的字符串。
输入
存在不超过1000个样例。 每行一个字符串,不超过1000个字符。
输出
每行输出一个样例的结果,如果原串可以变成回文串,输出"Yes",否则输出"No"。
样例输入
abcd aaaa
样例输出
No Yes
#include<stdio.h>
#include<string.h>
int main()
{
char b[]={'a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int c[27]={0};
int k=1000,i,j;
while(k--)
{
char a[1001];
int c[27]={0},d[27]={0},cnt=0;
scanf("%s",&a);
int len=strlen(a);
for(i=0;i<len;i++)
{
for(j=0;j<26;j++)
{
if(a[i]==b[j])
{
if(d[j]!=1)
{
cnt++;
d[j]=1;
}
c[j]++;
break;
}
}
}
int f1=1,f2=0;
for(i=0;i<26;i++)
{
if(c[i]%2!=0)
{
f1=0;f2++;
}
}
if(f1)
{
printf("Yes\n");
}
else
{
if(f2==1)
printf("Yes\n");
else printf("No\n");
}
}
}
就是一道简单题,没怎么思考直接暴力,留着自己以后有时间优化一下