字符串分段。輸入一串僅由小寫字母組成的字符串s,將這個字符串劃分為盡可能多的小片段,要求同一個字母只出現(xiàn)在其中的一個片段中,并按照分段順序逐行輸出分段結果。程序運行界面如圖所示。
(1)實現(xiàn)上述功能的Python程序如下,請在橫線處填入合適的代碼。
s=input(“請輸入一串僅包含小寫字母的字符串:”)
c=0
p=[-1]*52#數(shù)組p用來記錄各個小寫字母出現(xiàn)的起始位置和結束位置
#a[0]記錄a出現(xiàn)的起始位置,a[1]記錄a出現(xiàn)的結束位置,依次類推
for i in range(0,len(s)):#記錄各字符第一次和最后一次出現(xiàn)的位置
a=①ord(s[i])-97ord(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)一次的字符,起始位置就是結束位置
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)]=-1p[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”,輸出的結果一共有 33行,其中,第二行顯示結果為 queeqqueeq。
【考點】Python語言編程環(huán)境.
【答案】ord(s[i])-97;p[2*(j-1)]=-1;t2=p[2*i+1];3;queeq
【解答】
【點評】
聲明:本試題解析著作權屬菁優(yōu)網所有,未經書面同意,不得復制發(fā)布。
發(fā)布:2024/5/23 20:38:36組卷:7引用:3難度:0.4
相似題
-
1.有如下Python程序段:
字符串s為“ab018/20c2/d101/e“時,執(zhí)行該程序段后,sum的值為( ?。?/h2>發(fā)布:2024/12/12 13:30:1組卷:2引用:1難度:0.5 -
2.由圖像如圖a所示,用以下算法記錄圖像的像素點分布。先將像素的顏色值進行調整,使之成為一幅黑白圖像(如圖b所示),再將黑白圖像中像素點(0表示黑色,1表示白色)分布以列表形式存儲,如[2310,321,1230……]表示先有231個連續(xù)的黑色像素,再接著是32個連續(xù)的白色像素,再接著是123個連續(xù)的黑色像素……,列表中部分數(shù)據(jù)如圖c所示。
實現(xiàn)上述功能的Python代碼如下:
(1)由程序代碼可知,對圖像的記錄方式采用
(2)若得到圖d顏色加深的圖像,則劃波浪線處代碼應修改為
A.img[i,j]>210
B.img[i,j]>140
C.img[i,j]<140
D.img[i,j]<210
(3)在橫線處填上合適的代碼。
(4)程序加框處代碼有錯,請改正。發(fā)布:2024/12/11 21:0:1組卷:3引用:1難度:0.4 -
3.統(tǒng)計高一學生選課情況。高一學生要從物理、化學、生物、政治、歷史、地理、技術這七門科目中選擇3門作為選考科目,“1”表示已選擇科目,數(shù)據(jù)存儲在文件“xk.jye.ai”中。
(1)根據(jù)選課情況完成填充組合列(L列)。
(2)統(tǒng)計組合數(shù)量,并將選課組合人數(shù)最多的5個組合以柱形圖的方式呈現(xiàn)(如圖所示)。發(fā)布:2024/12/15 10:0:2組卷:4引用:1難度:0.4
把好題分享給你的好友吧~~