程序在Python中停止移动的动物时获得最终位置
假设我们有一个代表某些动物初始条件的字符串s。每只动物可以采用以下三个值之一:L,表示该动物向左移动。R表示动物向右移动。@,表示动物静止不动。朝某个方向移动的动物会拾取其他动物,除非该动物受到相反方向的力。然后,它将静止不动。当动物停止移动时,我们必须找到每个动物的方向。
因此,如果输入类似于s=“@@L@R@@@@@L”,则输出将为“LLL@RRRLLL”
示例
让我们看下面的实现以更好地理解-
from collections import deque
class Solution:
def solve(self, s):
levels = [-1 for i in s]
q = deque()
for idx in range(len(s)):
if s[idx] == "R" or s[idx] == "L":
q.append((idx, 0, s[idx]))
l = list(s)
while q:
idx, new_level, dir = q.popleft()
if levels[idx] == -1:
levels[idx] = new_level
l[idx] = dir
if dir == "R" and idx + 1 < len(l):
q.append((idx + 1, new_level + 1, dir))
elif dir == "L" and idx - 1 >= 0:
q.append((idx - 1, new_level + 1, dir))
elif levels[idx] == new_level:
if l[idx] != dir:
l[idx] = "@"
return "".join(l)
ob = Solution()
s = "@@L@R@@@@L"
print(ob.solve(s))输入值
"@@L@R@@@@L"输出结果
LLL@RRRLLL