lovelyly
Junior Member
O(ring_length^2 * key_length) nhưng ring_length <= 100, key_length <= 100 nên vẫn chạy
Python:
class Solution:
def findRotateSteps(self, ring: str, key: str) -> int:
ring_length = len(ring)
dp = [float("inf")] * ring_length
dp[0] = 0
prev_char = ""
for char in key:
if char == prev_char:
dp = [x + 1 for x in dp]
else:
new_dp = [float("inf")] * ring_length
for pos in range (ring_length):
if ring[pos] == char:
new_dp[pos] = min([1 + dp[i] + min((i-pos) % ring_length,(pos-i) % ring_length) for i in range (ring_length)])
dp = new_dp
prev_char = char
return min(dp)
Last edited: