有序队列(10分)
题目内容:
一开始给出了一个由小写字母组成的字符串 S。我们规定每次移动中,选择最左侧的字母,将其从原位置移除,并加到字符串的末尾。这样的移动可以执行任意多次
返回我们移动之后可以拥有的最小字符串(注:在Python3中,字符串的大小可用不等号比较)。
输入格式:
S。S为仅含有小写字母的字符串,长度不超过100000。
输出格式:
一个与S等长的字符串。
输入样例:
“cba”
输出样例:
“acb”
代码示例:
class Queue:
def __init__(self):
self.items = []
def isEmpty(self):
return self.items == []
def enqueue(self, item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
def func(String):
s=Queue()
temp = 0
min_str = String
for i in String:
s.enqueue(i)
while(temp<=s.size()):
first = s.dequeue()
s.enqueue(first)
new_list = ''.join(s.items)[::-1]
if new_list < min_str:
min_str = new_list
temp = temp + 1
return min_str
S = eval(input())
print(func(S))