1531. python3의 Leetcode 솔루션
5476 단어 python
class Solution:
def getLengthOfOptimalCompression(self, s: str, k: int) -> int:
def getLength(maxFreq): # The length to compress `maxFreq`
if maxFreq == 1:
return 1 # C
if maxFreq < 10:
return 2 # [1-9]c
if maxFreq < 100:
return 3 # [1-9][0-9]c
return 4 # [1-9][0-9][0-9]c
# Compression(i, k) := length of optimal compression of s[i:] w/ at most k deletion
@functools.lru_cache(None)
def compression(i, k):
if k < 0:
return math.inf
if i == len(s) or len(s) - i <= k:
return 0
ans = math.inf
maxFreq = 0 # Max freq in s[i..j]
count = Counter()
# Make chars in s[i..j] be same
# Keep the char that has max freq in this range and remove other chars
for j in range(i, len(s)):
count[s[j]] += 1
maxFreq = max(maxFreq, count[s[j]])
ans = min(ans, getLength(maxFreq) +
compression(j + 1, k - (j - i + 1 - maxFreq)))
return ans
return compression(0, k)
리트코드
도전
문제에 대한 링크는 다음과 같습니다.
https://leetcode.com/problems/string-compression-ii/
Reference
이 문제에 관하여(1531. python3의 Leetcode 솔루션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/chiki1601/1531-leetcode-solution-in-python3-2162
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
문제에 대한 링크는 다음과 같습니다.
https://leetcode.com/problems/string-compression-ii/
Reference
이 문제에 관하여(1531. python3의 Leetcode 솔루션), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/chiki1601/1531-leetcode-solution-in-python3-2162텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)