原题
/*
*@v7fgg
*执行用时:17 ms, 在所有 Java 提交中击败了22.68%的用户
*内存消耗:40.4 MB, 在所有 Java 提交中击败了100.00%的用户
*2020年6月21日 21:11
*/
class Solution {
public String sortString(String s) {
String ans="";
int zimu[]=new int[26];
for(int i=0;i<s.length();i++){
zimu[s.charAt(i)-'a']++;
}
int cishu=s.length();//记录操作次数
while(cishu>0){
for(int i=0;i<26;i++){
if(zimu[i]>0){
ans+=(char)(i+'a');
zimu[i]--;
cishu--;
}
}
for(int i=25;i>=0;i--){
if(zimu[i]>0){
ans+=(char)(i+'a');
zimu[i]--;
cishu--;
}
}
}
return ans;
}
}
/*
*@v7fgg
*执行用时:59 ms, 在所有 Java 提交中击败了5.09%的用户
*内存消耗:40.7 MB, 在所有 Java 提交中击败了100.00%的用户
*2020年6月21日 21:34
*/
class Solution {
public String sortString(String s) {
char[] c=s.toCharArray();
Arrays.sort(c);
Set<Integer> set=new HashSet<>();
String ans="";
while(set.size()<s.length()){
char a=(char)('a'-1);
for(int i=0;i<s.length();i++){
if(!set.contains(i)&&c[i]!=a){
set.add(i);
ans+=c[i];
a=c[i];
}
}
char b=(char)('z'+1);
for(int j=s.length()-1;j>=0;j--){
if(!set.contains(j)&&c[j]!=b){
set.add(j);
ans+=c[j];
b=c[j];
}
}
}
return ans;
}
}