由题目可知,当字符串中某个字符出现次数大于S.size()/2+S.size()%2时,必定不可能重构,反之则必定可以重构。然后将数组设置为奇数位和偶数位,先在偶数位用字符出现最多的那个字符的填满,然后在用其他数字填满剩余的偶数位,再填满奇数位,可以保证数字相邻数字不同。
class Solution {
public:
string reorganizeString(string S) {
map<char,int>m;
int maxChar=0;
char ch='a';
string res(S.size(),' ');