题目描述
幼儿园里有一个放倒的圆桶,它是一个线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。每个篮球有单独的编号,老师可以连续放入一个或多个篮球,小朋友可以在桶左边或右边将篮球取出,当桶里只有一个篮球的情况下,必须从左边取出。
如老师按顺序放入1、2、3、4、5
共5
个编号的篮球,那么小朋友可以依次取出的编号为1、2、3、4、5
或者3、1、2、4、5
编号的篮球,无法取出5、1、3、2、4
编号的篮球
其中3、1、2、4、5
的取出场景为: 连续放入1、2、3
号 -> 从右边取出3
号 -> 从左边取出1
号 -> 从左边取出2
号 -> 放入4
号 -> 从左边取出4
号 -> 放入5
号>从左边取出5
号,简单起见,我们以L
表示左,R
表示右,此时的篮球的依次取出序列为"RLLLL"
输入描述
每次输入包含一个测试用例:
1、第一行的数字作为老师依次放入的篮球编号
2、第二行的数字作为要检查是否能够按照放入顺序取出的篮球编号
其中篮球编号用逗号进行分隔。
输出描述
对于每个篮球的取出序列,如果确实可以获取,请打印出其按照左右方向的操作的取出顺序,如果无法获取则打印"NO"
备注
1、1 <= 篮球的编号,篮球个数 <= 200
;
2、篮球上的数字不重复
3、输出的结果中LR
的必须为大写:
示例
输入
4,5,6,7,0,1,2
6,4,0,1,2,5,7
输出
RLRRRLL
from collections import deque
# 入队顺序
push_list = list(map(int, input().split(",")))
# 出队顺序
pop_list = list(map(int, input().split(",")))
n = len(push_list)
q = deque()
ans = str()
pop_idx = 0
for push_num in push_list:
q.append(push_num)
while len(q) > 0:
if q[0] == pop_list[pop_idx]:
q.popleft()
pop_idx += 1
ans += "L"
elif q[-1] == pop_list[pop_idx]:
q.pop()
pop_idx += 1
ans += "R"
else:
break
print(ans) if len(ans) == n else print("NO")