給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。
這個問題也是乙個topk問題,只不過變成了統計char的個數。
class
solution
// 首先統計不同的元素出現的次數。
mapmap=
newhashmap
<
>()
;for
(char str: s.
tochararray()
)else
}// 遍歷map,用大頂堆儲存頻率最大的k個元素
priorityqueue
> pq=
newpriorityqueue
<
>
((e1, e2)
-> e2.
getvalue()
- e1.
getvalue()
);pq.
addall
(map.
entryset()
);//將map中的每乙個"k-v"對,作為乙個元素存入到pq這個大頂堆
stringbuilder sb=
newstringbuilder()
;while
(!pq.
isempty()
)}return sb.
tostring();}}
451 根據字元出現頻率排序
給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。示例 1 輸入 tree 輸出 eert 解釋 e 出現兩次,r 和 t 都只出現一次。因此 e 必須出現在 r 和 t 之前。此外,eetr 也是乙個有效的答案。示例 2 輸入 cccaaa 輸出 cccaaa 解釋 c 和 a 都出現三次。此...
451 根據字元出現頻率排序
給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。示例 1 輸入 tree 輸出 eert 解釋 e 出現兩次,r 和 t 都只出現一次。因此 e 必須出現在 r 和 t 之前。此外,eetr 也是乙個有效的答案。示例 2 輸入 cccaaa 輸出 cccaaa 解釋 c 和 a 都出現三次。此...
玩轉lee451 根據字元出現頻率排序
給定乙個字串,請將字串裡的字元按照出現的頻率降序排列。示例 1 輸入 tree 輸出 eert 解釋 e 出現兩次,r 和 t 都只出現一次。因此 e 必須出現在 r 和 t 之前。此外,eetr 也是乙個有效的答案。示例 2 輸入 cccaaa 輸出 cccaaa 解釋 c 和 a 都出現三次。此...