給你乙個字串 s ,請你根據下面的演算法重新構造字串:
從 s 中選出 最小 的字元,將它 接在 結果字串的後面。
從 s 剩餘字元中選出 最小 的字元,且該字元比上乙個新增的字元大,將它 接在 結果字串後面。
重複步驟 2 ,直到你沒法從 s 中選擇字元。
從 s 中選出 最大 的字元,將它 接在 結果字串的後面。
從 s 剩餘字元中選出 最大 的字元,且該字元比上乙個新增的字元小,將它 接在 結果字串後面。
重複步驟 5 ,直到你沒法從 s 中選擇字元。
重複步驟 1 到 6 ,直到 s 中所有字元都已經被選過。
在任何一步中,如果最小或者最大字元不止乙個 ,你可以選擇其中任意乙個,並將其新增到結果字串。
請你返回將 s 中字元重新排序後的 結果字串 。
示例 1:
輸入:s = 「aaaabbbbcccc」
輸出:「abccbaabccba」
解釋:第一輪的步驟 1,2,3 後,結果字串為 result = 「abc」
第一輪的步驟 4,5,6 後,結果字串為 result = 「abccba」
第一輪結束,現在 s = 「aabbcc」 ,我們再次回到步驟 1
第二輪的步驟 1,2,3 後,結果字串為 result = 「abccbaabc」
第二輪的步驟 4,5,6 後,結果字串為 result = 「abccbaabccba」
示例 2:
輸入:s = 「rat」
輸出:「art」
解釋:單詞 「rat」 在上述演算法重排序以後變成 「art」
示例 3:
輸入:s = 「leetcode」
輸出:「cdelotee」
示例 4:
輸入:s = 「ggggggg」
輸出:「ggggggg」
示例 5:
輸入:s = 「spo」
輸出:「ops」
1 <= s.length <= 500
s 只包含小寫英文本母。
思路:排序+遍歷;暴力的解法;
class
solution}}
string ss;
int vis[
1000]=
;char p;
while(1
)if(s[i]
>p&&hu==
1&&vis[i]==0
)}for(
int i=
0; i(flag==1)
break
; hu=0;
flag=1;
for(
int i=l-
1; i>=
0; i--)if
(s[i]
1&&vis[i]==0
)}for(
int i=
0; i(flag==1)
break;}
return ss;}}
;
1370 上公升下降字串
題目描述 給你乙個字串 s 請你根據下面的演算法重新構造字串 從 s 中選出 最小 的字元,將它 接在 結果字串的後面。從 s 剩餘字元中選出 最小 的字元,且該字元比上乙個新增的字元大,將它 接在 結果字串後面。重複步驟 2 直到你沒法從 s 中選擇字元。從 s 中選出 最大 的字元,將它 接在 ...
1370 上公升下降字串
上公升下降字串 給你乙個字串 s 請你根據下面的演算法重新構造字串 從 s 中選出 最小 的字元,將它 接在 結果字串的後面。從 s 剩餘字元中選出 最小 的字元,且該字元比上乙個新增的字元大,將它 接在 結果字串後面。重複步驟 2 直到你沒法從 s 中選擇字元。從 s 中選出 最大 的字元,將它 ...
1370 上公升下降字串
給你乙個字串s,請你根據下面的演算法重新構造字串 1 從 s 中選出 最小 的字元,將它 接在 結果字串的後面。2 從 s 剩餘字元中選出 最小 的字元,且該字元比上乙個新增的字元大,將它 接在 結果字串後面。3 重複步驟 2 直到你沒法從 s 中選擇字元。4 從 s 中選出 最大 的字元,將它 接...