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;
}
};