class Solution { public: string rearrangestring(string str) { int arr[26] = {0}; string s; int n = str.size(); int maxcount = 0; char maxchar = 0; for(int i=0;i<n;i++) { int ch = str[i] - 'a'; if(++arr[ch] > maxcount) { maxcount = arr[ch]; maxchar = str[i]; } } if(maxcount>(n+1)/2) return s; char c[100010]; int x = 0; while(maxcount--) { c[x] = maxchar; x += 2; } for(int j=0;j<26;j++) { if(arr[j] && j +'a'!= maxchar) { while(arr[j]--) { if(x>=n) x = 1; c[x] = j +'a'; x += 2; } } } for(int a=0;a<n;a++) { s += c[a]; } return s; } };