File tree Expand file tree Collapse file tree 3 files changed +32
-0
lines changed
leetcode/src/03085_minimum_deletions_to_make_string_k_special Expand file tree Collapse file tree 3 files changed +32
-0
lines changed Original file line number Diff line number Diff line change
1
+ from bisect import bisect_right
2
+ from collections import Counter
3
+ from itertools import accumulate , repeat
4
+
5
+
6
+ class Solution :
7
+ def minimumDeletions (self , word : str , k : int ) -> int :
8
+ c = Counter (word )
9
+ nums = sorted (list (c .values ()))
10
+ psum = list (accumulate (nums , initial = 0 ))
11
+ res = psum [- 1 ]
12
+ for i , num in enumerate (nums ):
13
+ x = num + k
14
+ j = bisect_right (nums , x , lo = i )
15
+ res = min (res , psum [- 1 ] - psum [j ] - (len (nums ) - j ) * x + psum [i ])
16
+ return res
Original file line number Diff line number Diff line change
1
+ import unittest
2
+ from .solution import Solution
3
+
4
+
5
+ class TestSolution (unittest .TestCase ):
6
+ def test_minimumDeletions (self ):
7
+ s = Solution ()
8
+ self .assertEqual (s .minimumDeletions ("aabcaba" , 0 ), 3 )
9
+ self .assertEqual (s .minimumDeletions ("dabdcbdcdcd" , 2 ), 2 )
10
+ self .assertEqual (s .minimumDeletions ("aaabaaa" , 2 ), 1 )
11
+ self .assertEqual (s .minimumDeletions ("ahahnhahhah" , 1 ), 2 )
12
+ self .assertEqual (s .minimumDeletions ("dabdcbdcdcd" , 2 ), 2 )
13
+
14
+
15
+ if __name__ == "__main__" :
16
+ unittest .main ()
You can’t perform that action at this time.
0 commit comments