@@ -3,6 +3,10 @@ package g3301_3400.s3389_minimum_operations_to_make_character_frequencies_equal
33// #Hard #String #Hash_Table #Dynamic_Programming #Counting #Enumeration
44// #2024_12_18_Time_9_ms_(78.95%)_Space_39.3_MB_(18.42%)
55
6+ import kotlin.math.abs
7+ import kotlin.math.max
8+ import kotlin.math.min
9+
610class Solution {
711 fun makeStringGood (s : String ): Int {
812 val n = s.length
@@ -12,8 +16,8 @@ class Solution {
1216 var mx = 0
1317 for (c in cnt)
1418 if (c != 0 ) {
15- mn = Math . min(mn, c)
16- mx = Math . max(mx, c)
19+ mn = min(mn, c)
20+ mx = max(mx, c)
1721 }
1822 if (mn == mx) return 0
1923 var dp0 = 0
@@ -23,21 +27,21 @@ class Solution {
2327 var ans = n - 1
2428 for (i in mn.. mx) {
2529 dp0 = cnt[0 ]
26- dp1 = Math . abs(i - cnt[0 ])
30+ dp1 = abs(i - cnt[0 ])
2731 for (j in 1 until 26 ) {
2832 tmp0 = dp0
2933 tmp1 = dp1
30- dp0 = Math . min(tmp0, tmp1) + cnt[j]
31- if (cnt[j] >= i) {
32- dp1 = Math . min(tmp0, tmp1) + (cnt[j] - i)
34+ dp0 = min(tmp0, tmp1) + cnt[j]
35+ dp1 = if (cnt[j] >= i) {
36+ min(tmp0, tmp1) + (cnt[j] - i)
3337 } else {
34- dp1 = Math . min(
35- tmp0 + i - Math . min(i, cnt[j] + cnt[j - 1 ]),
36- tmp1 + i - Math . min(i, cnt[j] + Math . max(0 , cnt[j - 1 ] - i)),
38+ min(
39+ tmp0 + i - min(i, cnt[j] + cnt[j - 1 ]),
40+ tmp1 + i - min(i, cnt[j] + max(0 , cnt[j - 1 ] - i)),
3741 )
3842 }
3943 }
40- ans = Math . min(ans, minOf(dp0, dp1))
44+ ans = min(ans, minOf(dp0, dp1))
4145 }
4246 return ans
4347 }
0 commit comments