December 05, 2024
이 문제는 'L', 'R', '_'로 이루어진 두 문자열이 주어질 때, 다음 연산을 통해 두 문자열이 똑같아질 수 있는지 확인하는 문제이다.
class Solution:
def canChange(self, start: str, target: str) -> bool:
# if order is different return False
if start.replace('_', '') != target.replace('_', ''):
return False
n = len(start)
i = j = 0
while i < n and j < n:
# skip underscores at start
while i < n and start[i] == '_':
i += 1
while j < n and target[j] == '_':
j += 1
# if exhausted, they should both be equal
if i == n or j == n:
return i == j
# check if pieces match
if (start[i] != target[j]) or \
(start[i] == 'L' and i < j) or \
(start[i] == 'R' and i > j):
return False
i += 1
j += 1
return True
Constraints:
n == start.length == target.length
1 <= n <= 105
start and target consist of the characters 'L', 'R', and '_'.