1370 上公升下降字串

2021-10-10 22:30:02 字數 1193 閱讀 2498

題目描述:給你乙個字串 s ,請你根據下面的演算法重新構造字串:從 s 中選出 最小 的字元,將它 接在 結果字串的後面。從 s 剩餘字元中選出 最小 的字元,且該字元比上乙個新增的字元大,將它 接在 結果字串後面。重複步驟 2 ,直到你沒法從 s 中選擇字元。從 s 中選出 最大 的字元,將它 接在 結果字串的後面。從 s 剩餘字元中選出 最大 的字元,且該字元比上乙個新增的字元小,將它 接在 結果字串後面。重複步驟 5 ,直到你沒法從 s 中選擇字元。重複步驟 1 到 6 ,直到 s 中所有字元都已經被選過。在任何一步中,如果最小或者最大字元不止乙個 ,你可以選擇其中任意乙個,並將其新增到結果字串。請你返回將 s 中字元重新排序後的 結果字串 。

解題思路:直接遍歷一遍字串,用長度為26的陣列記錄每個字母(26個)出現的次數,不斷的公升序和降序遍歷陣列,只要當前字母的次數不為零,就新增到最終結果中,新增之後就將對應的字母次數減一,知道所有字母都被選擇完畢,就返回結果,**如下:

class

solution

:def

sortstring

(self, s:

str)

->

str:

alpha_map =[0

]*26for c in s:

index =

ord(c)

-ord

('a'

) alpha_map[index]+=1

res =

'' size =

len(s)

while

(len

(res)

< size)

:for i in

range(26

):if alpha_map[i]

: res +=

chr(i+97)

alpha_map[i]-=1

iflen

(res)

< size:

for i in

range(25

,-1,

-1):

if alpha_map[i]

: res +=

chr(i+97)

alpha_map[i]-=1

return res

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 中選出 最大 的字元,將它 接...