class Solution {
public:
string sortString(string s) {
int len=s.length();//获取字符串长度
char ch[501];//创建字符串数组
string sh="";//创建结果字符串
bool flag[501];//设置标记数组
for(int i=0;i<len;i++)flag[i]=0,ch[i]=s[i];//初始化标记数组并将字符串转为字符数组
sort(ch,ch+len);//按从小到大排序字符
int count=0;//初始化取出字符个数
char cp;//当前取出的字符
while(count!=len){//设置结束边界
int i=0;//从最小开始
while(flag[i])i++;//找到仍存在的最小的字符
cp=ch[i];//取出 并更新状态
flag[i]=1;
count++;
sh+=cp;
i++;
while(i<len){//注意边界
if(!flag[i]&&ch[i]>cp){
cp=ch[i];
sh+=cp;
flag[i]=1;
count++;
}
i++;
}
i=len-1;//从最大的那边开始
while(i>0&&flag[i])i--;//找到仍存在的最大字符
if(flag[i])break;//如果没有最大字符 说明所有字符全部被取出 退出即可
cp=ch[i];//取出 更新状态
flag[i]=1;
count++;
sh+=cp;
i--;
while(i>0){//注意边界
if(!flag[i]&&ch[i]<cp){
cp=ch[i];
sh+=cp;
flag[i]=1;
count++;
}
i--;
}
}
return sh;//返回结果
}
};
此代码为本人原创 并未参考他人题解