在Python中获取动物停止时的最终位置的程序
假设我们有一个字符串s,表示动物的初始状态。每只动物可以取三个值之一:L表示动物向左移动,R表示动物向右移动,@表示动物静止不动。向某个方向移动的动物将拾取其他动物,除非该动物受到来自相反方向的力。然后它将保持原地。我们必须找到每只动物在动物停止移动时的朝向。
因此,如果输入是s =“@@L@R@@@@L”,则输出将为“LLL@RRRLLL”。
为了解决这个问题,我们将按照以下步骤进行:
- levels:大小与s相同且填有-1的列表
-
q:双端队列
-
对于范围0到s大小的idx,做如下操作:
- 如果s [idx]与“R”相同或s [idx]与“L”相同,则
- 将(idx,0,s [idx])插入q的末尾
- 如果s [idx]与“R”相同或s [idx]与“L”相同,则
- l:s字符的新字符列表
-
当q不为空时,执行如下操作:
- (idx,new_level,dir):q的左侧元素,并从q中删除它
-
如果levels [idx]等于-1,则
- levels [idx]:= new_level
-
l [idx]:= dir
-
如果dir与“R”相同且idx + 1
-
将idx + 1,new_level + 1,dir插入q的末尾
-
否则,当dir等于“L”且idx-1> = 0时,则
-
将(idx-1,new_level + 1,dir)插入q的末尾
-
否则,当levels [idx]等于new_level时,则
- 如果l [idx]与dir不同,则
-
l [idx]:“@”
- (idx,new_level,dir):q的左侧元素,并从q中删除它
-
通过连接l的元素返回一个字符串
更多Python相关文章,请阅读:Python 教程
例子
让我们看下面的实现以更好地理解-