小b重排字符串
2485 小b重排字符串
小b有一个字符串S,现在她希望重排列S,使得S中相邻字符不同。
请你判断小b是否可能成功。
样例解释:将"aab"重排为"aba"即可。
输入
Ã输入一个只包含小写字母的字符串S,其长度n满足1≤n≤500
输出
如果可能,输出"Possible"; 否则,输出"Impossible"。
输入样例
aab
输出样例
Possible
思路:统计每一个字母出现的次数,如果la%2==0,出现最多次数必须《=la/2;
如果la%2==1,必须《=la/2+1;
#include<iostream> using namespace std; int x[129]; int main(){ string a; cin>>a; int la=a.size(); for(int i=0;i<la;i++) x[a[i]]++; int maxx=0; for(int i=1;i<=128;i++) if(maxx<x[i]) maxx=x[i]; //cout<<maxx<<endl; if(la%2==0&&maxx>la/2){ cout<<"Impossible"<<endl; return 0; } if(la%2==1&&maxx>la/2+1){ cout<<"Impossible"<<endl; return 0; } cout<<"Possible"<<endl; return 0; }