思路:规规矩矩按题目来,飘过;
static bool cmp(char a, char b)
{
return a < b;
}
string sortString(string s)
{
int len = s.size();
if (len == 0)
return "";
if (len == 1)
return s;
sort(s.begin(), s.end(), cmp);
string res;
vector<bool> flag(len, true);
int count = 0;
while (true)
{
//找到最小值
for (int i = 0; i < len; i++)
{
if (flag[i])
{
res.push_back(s[i]);
flag[i] = false;
count++;
break;
}
}
//第一轮
for (int i = 1; i < len; i++)
{
if (flag[i] && s[i] > res.back())
{
res.push_back(s[i]);
flag[i] = false;
count++;
}
}
//找到最大值
for (int i = len - 1; i >= 0; i--)
{
if (flag[i])
{
res.push_back(s[i]);
flag[i] = false;
count++;
break;
}
}
//第二轮
for (int i = len - 1; i >= 0; i--)
{
if (flag[i] && s[i] < res.back())
{
res.push_back(s[i]);
flag[i] = false;
count++;
}
}
if (count == len)
{
break;
}
}
return res;
}