一開始給出了乙個由小寫字母組成的字串 s。我們規定每次移動中,選擇最左側的字母,將其從原位置移除,並加到字串的末尾。這樣的移動可以執行任意多次返回我們移動之後可以擁有的最小字串(注:在python3中,字串的大小可用不等號比較)。
from pythonds.basic.deque import deque # 為了便於運算元據,避免引入更多結構
def func(s):
print(type(s))
nq = deque()
for each in s: # 輸入資料
nq.addfront(each)
nq.addfront(nq.removerear())
temp = ""
min = s
length = len(s)
for i in range(length):
s = nq.removerear()
nq.addfront(s) # 保證佇列不變
# print(temp)
for i in range(length-1): # 比較, 比較的次數不會超過字串的長度
if temp < min:
min = temp
nq.addfront(nq.removerear()) # 移動且每輪迴圈都要執行
temp = ""
for i in range(length):
s = nq.removerear()
nq.addfront(s)
temp = temp + s
# print(temp)
output = min
return output
s = eval(input())
print(func(s))
佇列 雙端佇列
1.佇列 佇列是遵循先進先出 fifo,也稱為先來先服務 原則的一組有序的項。佇列在尾部新增新 元素,並從頂部移除元素。最新新增的元素必須排在佇列的末尾 class queue 向佇列新增元素 enqueue element 檢查佇列是否為空並獲取它的長度 isempty 從佇列移除元素 deque...
佇列 , 雙端佇列, 棧
注意 linkedlist中新增或者取出的方法有很多,比如add,offer,offerfirst,offerlast,push.根據使用的資料結構不同,最好區分使用.一,佇列queue fifo first in first out 0,模型上一般為右進左出,右端入隊並稱為隊尾,左端出隊並稱為隊頭...
棧 佇列 雙端佇列
棧 stack 有些地方稱為堆疊,是一種容器,可存入資料元素 訪問元素 刪除元素,由於棧資料結構只允許在一端進行操作,因而按照後進先出 lifo,last in first out 的原理運作。棧結構實現 棧可以用順序表實現,也可以用鍊錶實現。棧的操作 功能stack 建立乙個新的空棧 push i...