mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-04 16:12:47 +08:00
添加 problem 451
This commit is contained in:
@ -0,0 +1,35 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"sort"
|
||||
)
|
||||
|
||||
func frequencySort(s string) string {
|
||||
if s == "" {
|
||||
return ""
|
||||
}
|
||||
sMap := map[byte]int{}
|
||||
cMap := map[int][]byte{}
|
||||
sb := []byte(s)
|
||||
for _, b := range sb {
|
||||
sMap[b]++
|
||||
}
|
||||
for key, value := range sMap {
|
||||
cMap[value] = append(cMap[value], key)
|
||||
}
|
||||
|
||||
var keys []int
|
||||
for k := range cMap {
|
||||
keys = append(keys, k)
|
||||
}
|
||||
sort.Sort(sort.Reverse(sort.IntSlice(keys)))
|
||||
res := make([]byte, 0)
|
||||
for _, k := range keys {
|
||||
for i := 0; i < len(cMap[k]); i++ {
|
||||
for j := 0; j < k; j++ {
|
||||
res = append(res, cMap[k][i])
|
||||
}
|
||||
}
|
||||
}
|
||||
return string(res)
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question451 struct {
|
||||
para451
|
||||
ans451
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
// one 代表第一个参数
|
||||
type para451 struct {
|
||||
one string
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans451 struct {
|
||||
one string
|
||||
}
|
||||
|
||||
func Test_Problem451(t *testing.T) {
|
||||
|
||||
qs := []question451{
|
||||
question451{
|
||||
para451{"tree"},
|
||||
ans451{"eert"},
|
||||
},
|
||||
|
||||
question451{
|
||||
para451{"cccaaa"},
|
||||
ans451{"cccaaa"},
|
||||
},
|
||||
|
||||
question451{
|
||||
para451{"Aabb"},
|
||||
ans451{"bbAa"},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 451------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans451, q.para451
|
||||
fmt.Printf("【input】:%v 【output】:%v\n", p, frequencySort(p.one))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
64
Algorithms/0451. Sort Characters By Frequency/README.md
Normal file
64
Algorithms/0451. Sort Characters By Frequency/README.md
Normal file
@ -0,0 +1,64 @@
|
||||
# [451. Sort Characters By Frequency](https://leetcode.com/problems/sort-characters-by-frequency/)
|
||||
|
||||
## 题目
|
||||
|
||||
Given a string, sort it in decreasing order based on the frequency of characters.
|
||||
|
||||
|
||||
Example 1:
|
||||
|
||||
```c
|
||||
Input:
|
||||
"tree"
|
||||
|
||||
Output:
|
||||
"eert"
|
||||
|
||||
Explanation:
|
||||
'e' appears twice while 'r' and 't' both appear once.
|
||||
So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
|
||||
```
|
||||
|
||||
Example 2:
|
||||
|
||||
```c
|
||||
Input:
|
||||
"cccaaa"
|
||||
|
||||
Output:
|
||||
"cccaaa"
|
||||
|
||||
Explanation:
|
||||
Both 'c' and 'a' appear three times, so "aaaccc" is also a valid answer.
|
||||
Note that "cacaca" is incorrect, as the same characters must be together.
|
||||
```
|
||||
|
||||
Example 3:
|
||||
|
||||
```c
|
||||
Input:
|
||||
"Aabb"
|
||||
|
||||
Output:
|
||||
"bbAa"
|
||||
|
||||
Explanation:
|
||||
"bbaA" is also a valid answer, but "Aabb" is incorrect.
|
||||
Note that 'A' and 'a' are treated as two different characters.
|
||||
```
|
||||
|
||||
|
||||
|
||||
|
||||
## 题目大意
|
||||
|
||||
这道题是 Google 的面试题。
|
||||
|
||||
给定一个字符串,要求根据字符出现的频次从高到低重新排列这个字符串。
|
||||
|
||||
## 解题思路
|
||||
|
||||
思路比较简单,首先统计每个字符的频次,然后排序,最后按照频次从高到低进行输出即可。
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user