程序在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

猜你喜欢