1.有序队列
思路:利用对字符串切片处理,直接将最后一个字母拼接到后面,然后进行比较得最小字符串。
def func(S):
min_str = S
for i in range(len(S)):
S = S[1:] + S[0]
if S < min_str:
min_str = S
return min_str
S = eval(input())
print(func(S))
思路:应用队列的先进先出特点,设置最开始的字符串为最小值,不断的将最后一个字母出队列,然后再将这个字母入队列,与设置的字符串进行比较,若小于的话,则替换最小值,若大于的话,继续出队列、入队列。直到将字符串的所有情况都遍历一遍。
# 超出内存限制了
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(S):
li = []
q = Queue()
for i in S:
q.enqueue(i)
k=0
while k <= q.size():
first = q.dequeue()
q.enqueue(first)
astr = ''.join(q.items)[::-1]
if astr not in li:
li.append(astr)
k