Skip to content

Commit 436bc90

Browse files
committed
Add leetcode problem 3085
1 parent 285925d commit 436bc90

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

leetcode/src/03085_minimum_deletions_to_make_string_k_special/__init__.py

Whitespace-only changes.
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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()

0 commit comments

Comments
 (0)