Longest Repeating Character Replacement
質問する
最長文字列長は(
に答える
from collections import defaultdict
class Solution:
def characterReplacement(self, s: str, k: int) -> int:
start, end = 0, 1
memory = defaultdict(int)
maxiLen = 0
memory[s[start]] += 1
while start <= end < len(s):
thisLen = end - start
if thisLen - max(memory.values()) <= k:
# possible to extend
maxiLen = max(maxiLen, thisLen)
memory[s[end]] += 1
end += 1
else:
# shrink the length
memory[s[start]] -= 1
start += 1
if end - start - max(memory.values()) <= k:
maxiLen = max(maxiLen, end-start)
return maxiLen
結果
難しい問題ではありませんが、なぜ脳がこんなに鈍いのでしょうか.
スピードを上げる
from collections import defaultdict
class Solution:
def characterReplacement(self, s: str, k: int) -> int:
start, end = 0, 1
memory = defaultdict(int)
maxiLen = 0
thisLen = 1
lenS = len(s)
memory[s[start]] += 1
while end < lenS:
if thisLen - max(memory.values()) <= k:
# possible to extend
maxiLen = max(maxiLen, thisLen)
memory[s[end]] += 1
end += 1
thisLen += 1
else:
# shrink the length
memory[s[start]] -= 1
start += 1
thisLen -= 1
if thisLen - max(memory.values()) <= k:
maxiLen = max(maxiLen, end-start)
return maxiLen
一度に計算できるものはすべて一度に完成し、
現在のwindowの長さは毎回計算しないで、start、endをプラスして、言い逃れによって1増加あるいは減少します
Reference
この問題について(Longest Repeating Character Replacement), 我々は、より多くの情報をここで見つけました
https://velog.io/@twinklesu914/Longest-Repeating-Character-Replacement
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
from collections import defaultdict
class Solution:
def characterReplacement(self, s: str, k: int) -> int:
start, end = 0, 1
memory = defaultdict(int)
maxiLen = 0
thisLen = 1
lenS = len(s)
memory[s[start]] += 1
while end < lenS:
if thisLen - max(memory.values()) <= k:
# possible to extend
maxiLen = max(maxiLen, thisLen)
memory[s[end]] += 1
end += 1
thisLen += 1
else:
# shrink the length
memory[s[start]] -= 1
start += 1
thisLen -= 1
if thisLen - max(memory.values()) <= k:
maxiLen = max(maxiLen, end-start)
return maxiLen
Reference
この問題について(Longest Repeating Character Replacement), 我々は、より多くの情報をここで見つけました https://velog.io/@twinklesu914/Longest-Repeating-Character-Replacementテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol