LeetCode 1370上昇下降文字列HERODINGのLeetCodeの道


文字列sをあげます.次のアルゴリズムに基づいて文字列を再構築してください.
  s           ,              。
  s               ,              ,             。
     2 ,       s      。
  s           ,              。
  s               ,              ,             。
     5 ,       s      。
     1   6 ,   s            。

いずれのステップでも、最小または最大文字が1つ以上ある場合は、いずれかを選択して結果文字列に追加できます.
s中の文字を並べ替えた結果の文字列を返してください.
例1:
入力:s="aaaaabbbccc"出力:"abccbaabcccba"解釈:第1ラウンドのステップ1,2,3後、結果文字列はresult="abc"第1ラウンドのステップ4,5,6後、結果文字列はresult="abccba"第1ラウンドが終了し、現在s="aabcc"となり、再びステップ1第2ラウンドのステップ1,2,3後に戻り、結果文字列がresult="abccbaabc"の2ラウンド目のステップ4,5,6の後、結果文字列はresult="abccbaabccba"
例2:
入力:s=「rat」出力:「art」解釈:単語「rat」は上記のアルゴリズムを並べ替えた後に「art」になる
例3:
入力:s=「leetcode」出力:「cdelotee」
例4:
入力:s=「ggggg」出力:「ggggg」
例5:
入力:s=「spo」出力:「ops」
ヒント:
1 <= s.length <= 500
s          。

ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/increasing-decreasing-string著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
问题解决の考え方:简単な问题とはいえ、本当に迂回していて、问题は読むことができません.アルファベットの大きさによって、まず小さいから大きいまで、それから大きいから小さいまで、后ろに置いて、すべての遍歴まで、毎回遍歴の过程で缲り返されていない数値、コードは以下の通りです.
class Solution {
     
public:
    string sortString(string s) {
     
        vector<int> ans(26);
        //          
        for(int i = 0 ; i < s.length(); i ++){
     
            ans[s[i] - 'a'] ++;
        }
        string res;
        //         s   
        while(res.length() < s.length()){
     
            //      
            for(int i = 0; i < 26; i ++){
     
                if(ans[i] != 0){
     
                    res += 'a' + i;
                    ans[i] --;
                }
            }
            //      
            for(int i = 25; i >= 0; i --){
     
                if(ans[i] != 0){
     
                    res += i + 'a';
                    ans[i] --;
                }
            }
        }
        return res;
    }
};


/*  :heroding
  :https://leetcode-cn.com/problems/increasing-decreasing-string/solution/zhi-xing-ji-bai-97tong-su-yi-dong-de-si-lu-by-hero/
  :  (LeetCode)
        。             ,          。*/