1 クラスソリューション: 2 DEF(自己、S:STR)sortString - > STR: 3 N = LEN(S) 4 DIC = {} 5 のための I における範囲(N): 6 場合、S [i]はない でDIC: 7 DIC [S [I] = 1 8 さもなければ: 9 DIC [S [I] + = 1 10 sorted_dic1 =ソート(dic.items()、キー= ラムダX(X [0])) 11 sorted_dic2 =ソート(dic.items()、キー= ラムダ X(X [0])、逆=真) 12 カウント= 0 13 結果= '' 14 ながら <数:nは 15 のための D でsorted_dic1: 16 キー= D [0]が 17 であれば DIC [キー]> 0: 18 - = 1 DIC [キー] 19 結果+ = キー 20 カウント+ = 1 21 のための D でsorted_dic2: 22 キー= D [0]が 23 であれば DIC [キー]>0: 24 DIC [キー] - = 1 25 結果+ = キー 26 カウント+ = 1 27 リターン結果
アルゴリズム的思考:ハッシュ。
各文字が二回辞書のソートに表示される辞書のレコードを多数回使用してください。
文字の正のシーケンスのソートによると、文字が逆の順序でソート。
「蛇」サイクル、辞書を横断する第一正のシーケンス、結果の文字列にスプライスから取り出し、各文字、次に逆の順序で辞書をトラバースは、文字列スプライシングから除去されるたびに結果に。
スプライスの数nすると、すべての文字の記述は、結果文字列に接合し、結果文字列を返してきました。