字符串分段。輸入一串僅由小寫字母組成的字符串s,將這個字符串劃分為盡可能多的小片段,要求同一個字母只出現(xiàn)在其中的一個片段中,并按照分段順序逐行輸出分段結(jié)果。程序運行界面如圖所示。
(1)實現(xiàn)上述功能的Python程序如下,請在橫線處填入合適的代碼。
s=input(“請輸入一串僅包含小寫字母的字符串:”)
c=0
p=[-1]*52#數(shù)組p用來記錄各個小寫字母出現(xiàn)的起始位置和結(jié)束位置
#a[0]記錄a出現(xiàn)的起始位置,a[1]記錄a出現(xiàn)的結(jié)束位置,依次類推
for i in range(0,len(s)):#記錄各字符第一次和最后一次出現(xiàn)的位置
a=①
ord(s[i])-97
ord(s[i])-97
if p[2*a]==-1:
p[2*a]=i
else:
p[2*a+1]=i
for i in range(0,26):
if p[2*i]>p[2*i+1]:
p[2*i+1]=p[2*i]#只出現(xiàn)一次的字符,起始位置就是結(jié)束位置
if p[2*i]!=-1:
c+=1
for i in range(o,c):將字符位置按照出現(xiàn)的起始位置升序排序
for j in range(25,i,-1):
if p[2*j]>-1:
if p[2*(j-1]>p[2*j]or②
p[2*(j-1)]=-1
p[2*(j-1)]=-1
:
p[2*(j-1)],p[2*j]=p[2*j],p[2*(j-1)]
p[2*(j-1)+1],p[2*j+1]=p[2*j+1],p[2*(j-1)+1]
t1,t2=p[0],p[1]#字符串分段
for i in range(1,c):
if p[2*i]<t2 and p[2*i+1]>t2:
③
t2=p[2*i+1]
t2=p[2*i+1]
elif p[2*i]>t2:
print(s[t1:t2+1])
tl,t2=p[2*i],p[2*i+1]
print(s[t1:t2+1])
(2)運行程序后,若輸入的字符串s為“hshjhqueeqabaa”,輸出的結(jié)果一共有
3
3
行,其中,第二行顯示結(jié)果為
queeq
queeq
。