File tree Expand file tree Collapse file tree 4 files changed +85
-5
lines changed
solution/1600-1699/1647.Minimum Deletions to Make Character Frequencies Unique Expand file tree Collapse file tree 4 files changed +85
-5
lines changed Original file line number Diff line number Diff line change 53
53
54
54
<!-- 这里可写通用的实现逻辑 -->
55
55
56
- 哈希表 + 升序排序
56
+ 哈希表 + 排序。
57
57
58
58
<!-- tabs:start -->
59
59
62
62
<!-- 这里可写当前语言的特殊实现逻辑 -->
63
63
64
64
``` python
65
-
65
+ class Solution :
66
+ def minDeletions (self , s : str ) -> int :
67
+ counter = collections.Counter(s)
68
+ vals = [v for v in counter.values()]
69
+ vals.sort(reverse = True )
70
+ ans = 0
71
+ for i in range (1 , len (vals)):
72
+ while vals[i] >= vals[i - 1 ] and vals[i] > 0 :
73
+ vals[i] -= 1
74
+ ans += 1
75
+ return ans
66
76
```
67
77
68
78
### ** Java**
69
79
70
80
<!-- 这里可写当前语言的特殊实现逻辑 -->
71
81
72
82
``` java
73
-
83
+ class Solution {
84
+ public int minDeletions (String s ) {
85
+ int [] counter = new int [26 ];
86
+ for (char c : s. toCharArray()) {
87
+ ++ counter[c - ' a' ];
88
+ }
89
+ Arrays . sort(counter);
90
+ int ans = 0 ;
91
+ for (int i = 24 ; i >= 0 ; -- i) {
92
+ while (counter[i] >= counter[i + 1 ] && counter[i] > 0 ) {
93
+ -- counter[i];
94
+ ++ ans;
95
+ }
96
+ }
97
+ return ans;
98
+ }
99
+ }
74
100
```
75
101
76
102
### ** TypeScript**
Original file line number Diff line number Diff line change @@ -52,13 +52,39 @@ Note that we only care about characters that are still in the string at the end
52
52
### ** Python3**
53
53
54
54
``` python
55
-
55
+ class Solution :
56
+ def minDeletions (self , s : str ) -> int :
57
+ counter = collections.Counter(s)
58
+ vals = [v for v in counter.values()]
59
+ vals.sort(reverse = True )
60
+ ans = 0
61
+ for i in range (1 , len (vals)):
62
+ while vals[i] >= vals[i - 1 ] and vals[i] > 0 :
63
+ vals[i] -= 1
64
+ ans += 1
65
+ return ans
56
66
```
57
67
58
68
### ** Java**
59
69
60
70
``` java
61
-
71
+ class Solution {
72
+ public int minDeletions (String s ) {
73
+ int [] counter = new int [26 ];
74
+ for (char c : s. toCharArray()) {
75
+ ++ counter[c - ' a' ];
76
+ }
77
+ Arrays . sort(counter);
78
+ int ans = 0 ;
79
+ for (int i = 24 ; i >= 0 ; -- i) {
80
+ while (counter[i] >= counter[i + 1 ] && counter[i] > 0 ) {
81
+ -- counter[i];
82
+ ++ ans;
83
+ }
84
+ }
85
+ return ans;
86
+ }
87
+ }
62
88
```
63
89
64
90
### ** TypeScript**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int minDeletions (String s ) {
3
+ int [] counter = new int [26 ];
4
+ for (char c : s .toCharArray ()) {
5
+ ++counter [c - 'a' ];
6
+ }
7
+ Arrays .sort (counter );
8
+ int ans = 0 ;
9
+ for (int i = 24 ; i >= 0 ; --i ) {
10
+ while (counter [i ] >= counter [i + 1 ] && counter [i ] > 0 ) {
11
+ --counter [i ];
12
+ ++ans ;
13
+ }
14
+ }
15
+ return ans ;
16
+ }
17
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def minDeletions (self , s : str ) -> int :
3
+ counter = collections .Counter (s )
4
+ vals = [v for v in counter .values ()]
5
+ vals .sort (reverse = True )
6
+ ans = 0
7
+ for i in range (1 , len (vals )):
8
+ while vals [i ] >= vals [i - 1 ] and vals [i ] > 0 :
9
+ vals [i ] -= 1
10
+ ans += 1
11
+ return ans
You can’t perform that action at this time.
0 commit comments