試卷征集
加入會員
操作視頻
查找最短26個字母字符串:在文本框Text1中輸入任意一串包含小寫字母的字符串(長度n>=26),要求找到長度最小的一段區(qū)間,能夠包含全部26個小寫英文字母。小王設(shè)計了VB程序用于搜索最短字符串,單擊“查找”按鈕command1,若無解,則在標簽Label1中輸出“無解!”,反之程序在標簽Label1中輸出該最小區(qū)間的長度以及字符的開始位置,并在文本框Text2中輸出相應的最短字符串,程序界面如圖所示:
菁優(yōu)網(wǎng)
(1)確定初始右邊界:從第1個字符開始,向右搜索到包含全部26個字母的子串,并因此而確定右邊界,同時記錄每個字母在子串中出現(xiàn)過的次數(shù)。
(2)調(diào)整子串左邊界:若左邊界有重復的字母則表明該子串可縮短,故左邊可右移1位……直到找到一個符合條件的子串并記錄,然后子串左邊界再右移1位。
(3)調(diào)整子串右邊界:子串右邊界繼續(xù)右移,在新子串符合條件后,記錄并進行比較。
重復(2)各調(diào)整步驟,直至遍歷完整個字符串,獲得并輸出滿足條件的最小長度字符串。
實現(xiàn)上述功能的VB程序如下,請回答下列問題。
(1)對于字符串“qbwcadsgeqbdatcy”,包括字母“abcde”的最短字符串長度為
7
7
(填數(shù)字)。
(2)請在畫線處填入合適的代碼。
Const n=300
Dim i As Integer,k As Integer,length As Integer,L As Integer
Dim pos As Integer,s1 As String,res As String
Dim f(1 To 26)As Integer'數(shù)組f記錄每個小寫英文字母的出現(xiàn)次數(shù)
Dim s(1 To n)As Integer'數(shù)組s記錄每個輸入字符在字母表中的位置
Private Sub Command1_Click
(  )
( ?。?/div>
res=““
s1=Text1.Text
For i=1 To Len(s1)
s(i)=①
Asc(Mid(s1,i,1))-96或Asc(Mid(s1,i,1))-Asc(“a“)+1
Asc(Mid(s1,i,1))-96或Asc(Mid(s1,i,1))-Asc(“a“)+1

Next i
k=0:pos=1:length=n
For i=1 To 26
f(i)=0
Next i
For i=1 To Len(s1)
If f(s(i))=0 Then k=k+1
f(s(i))=f(s(i))+1'調(diào)整右邊界,直到達到26個字母
Do While ②
k=26
k=26

f(s(pos))=f(s(pos))-1
If ③
f(s(pos))=0
f(s(pos))=0
 Then
k=k-1
If i-pos+1<length Then
length=i-pos+1
res=Mid(s1,pos,length)
L=pos
End If
End If
pos=pos+1
Loop
Next i
If res<>““Then
Text2.Text=res
Label1.Caption=“最短長度:“+Str(length)+“開始位置:“+Str(L)
Else
Label1.Caption=“無解!“
End If
End Sub
【答案】7;( ?。籄sc(Mid(s1,i,1))-96或Asc(Mid(s1,i,1))-Asc(“a“)+1;k=26;f(s(pos))=0
【解答】
【點評】
聲明:本試題解析著作權(quán)屬菁優(yōu)網(wǎng)所有,未經(jīng)書面同意,不得復制發(fā)布。
發(fā)布:2024/4/20 14:35:0組卷:0引用:1難度:0.3
相似題
  • 1.張三同學收集了一個地區(qū)8月各類共享單車的騎行數(shù)據(jù)記錄,每天的用戶數(shù)據(jù)存儲于“sharedbikes.xlsx”文件中,不考慮跨天數(shù)據(jù)。數(shù)據(jù)格式如圖a所示,請回答下列問題:
    菁優(yōu)網(wǎng)
    (1)cal函數(shù)功能為:讀取騎行時間的小時和分鐘部分,轉(zhuǎn)換為分鐘格式并返回,如“2022/8/206:57”獲取“6:57”轉(zhuǎn)換為417(6*60+57=417),代碼如下。請在劃線處填入合適的代碼。
    菁優(yōu)網(wǎng)
    (2)統(tǒng)計本月各類型單車的每天平均騎行時長,并繪制柱形圖,代碼如下,繪制的圖表如圖b所示,請在劃線處填入合適的代碼。
    菁優(yōu)網(wǎng)
    菁優(yōu)網(wǎng)
    (3)統(tǒng)計本月各類型單車的騎行次數(shù),下列加框處代碼有錯,可以改正為
     
    (選填字母)。
    菁優(yōu)網(wǎng)
    發(fā)布:2024/8/26 0:0:8組卷:2引用:1難度:0.5
  • 2.某電商超市開展?jié)M減活動,每個賬戶贈送了多張優(yōu)惠券,購物滿一定額度可減免相應金額。例:小華賬戶中有“滿100減30”“滿40減12”“滿20減5”3張優(yōu)惠券,小華購買了100元商品,使用滿額最大的優(yōu)惠券(“滿100減30”)后實付金額70元。
    設(shè)計Python程序:運行程序時,顯示已有的優(yōu)惠券,輸入多種商品數(shù)量及單價,用“*”分隔數(shù)量和單價(商品數(shù)量為1可省略數(shù)量及“*”),多種商品間用“,”分隔,以“,”結(jié)束。例如輸入“10,3*20,2*15,”表示:1件10元商品,3件20元商品,2件15元商品,程序輸出使用優(yōu)惠券后的訂單信息。程序界面及程序如下:
    菁優(yōu)網(wǎng)
    (1)輸入購買商品數(shù)量及單價,計算商品原價及商品總數(shù)量,請在劃線處填入合適的代碼。
    菁優(yōu)網(wǎng)
    (2)根據(jù)商品原價使用滿額最優(yōu)的優(yōu)惠券,計算實付金額,請在劃線處填入合適的代碼。
    菁優(yōu)網(wǎng)
    (3)運行該程序,若輸入商品數(shù)量及單價為“3*20,10,”則輸出實付金額為
     
    發(fā)布:2024/8/26 0:0:8組卷:1引用:1難度:0.5
  • 3.小明同學去看病,當他在一位醫(yī)生的診室門口等待就診的時候,發(fā)現(xiàn)了叫號系統(tǒng)的頁面上有兩行病人名單。第一行名單為正常排隊等待就診的序號,第二行名單為過號或檢后再診而等待的序號。叫號的規(guī)則是先在第一行叫2個就診序號,再到第二行叫1個就診序號。小明同學回家后將剛才發(fā)現(xiàn)的叫號規(guī)則編寫了Python程序。如圖示例所示:
    圖①:當前到來的就診序號是3號,為過號或檢后再診序號,進入第二行,先到達先就診
    圖②:當前到來的就診序號是4號,為過號或檢后再診序號,進入第二行
    圖③:當前到來的就診序號是16號,為正常排隊等待就診的序號,進入第一行,按就診序號順序排列
    圖④:開始叫號,按照正常排隊等待就診叫號2位,過號或檢后再診叫號1位,得到新的順序
    菁優(yōu)網(wǎng)?
    (1)請在劃線處填入合適的代碼
    (2)加框處的代碼有誤,請改正
    菁優(yōu)網(wǎng)?
    發(fā)布:2024/8/26 0:0:8組卷:1引用:1難度:0.5
小程序二維碼
把好題分享給你的好友吧~~
APP開發(fā)者:深圳市菁優(yōu)智慧教育股份有限公司 | 應用名稱:菁優(yōu)網(wǎng) | 應用版本:4.8.2  |  隱私協(xié)議      第三方SDK     用戶服務條款廣播電視節(jié)目制作經(jīng)營許可證出版物經(jīng)營許可證網(wǎng)站地圖本網(wǎng)部分資源來源于會員上傳,除本網(wǎng)組織的資源外,版權(quán)歸原作者所有,如有侵犯版權(quán),請立刻和本網(wǎng)聯(lián)系并提供證據(jù),本網(wǎng)將在三個工作日內(nèi)改正