程式設計M2補題 B HRZ學英語

2021-10-05 04:02:00 字數 1037 閱讀 1862

給定乙個字串,包括26個大寫字母和「?」,其中?可以代表任意乙個字母,現要求你在這個字串中找到第乙個連續的包含26個大寫字母的子串(可以有問號),並輸出字典序最小的那乙個。

輸入只有一行,乙個符合題目描述的字串。

輸出只有一行,如果存在這樣的子串,請輸出,否則輸出-1

思路很簡單,用乙個長度為26的移動框,在輸入字串上移動,每次移動乙個字元,然後判斷此時框內的子串是否符合題目要求,因為要求的輸出第乙個滿足條件的子串,因此只要符合條件,輸出這個框內的字典序最小的情況即可,如果不存在輸出-1.

具體細節:

#include

#include

using

namespace std;

int vis[26]

;string s;

int index[27]

,num=0;

intmain()

else}if

(cnt==0)

}for

(int i=l;i<=r;

++i)

cout

else

if(vis[s[l]

-'a']==

1)r++;if

(s[r]

=='?'

)continue

; vis[s[r]

-'a']++

;if(vis[s[r]

-'a'

]>1)

cnt++;}

if(r==s.

size()

-1&&cnt>0)

cout<<-1

;else}}

}for

(int i=l;i<=r;

++i)

cout<}return0;

}

這道題是模測的時候做出來的,看到題目的時候就覺得很直觀,實際做的時候還是挺曲折的,因為框每次移動後的刪點和加點,根據該位置是字母還是問號處理方式是不一樣的,所以處理起來腦子可能一時不夠清晰(還是思路整理的不明白),但結果還是好的。

M2補題 T1 HRZ的序列

相較於咕咕東,瑞神是個起早貪黑的好孩子,今天早上瑞神起得很早,刷b站時看到了乙個序列aa,他對這個序列產生了濃厚的興趣。他好奇是否存在乙個數kk,使得一些數加上kk,一些數減去kk,一些數不變,使得整個序列中所有的數相等。其中對於序列中的每個位置上的數字,至多只能執行一次加運算或減運算或是對該位置不...

M 2的SATA和M 2的NVME協議的區別

m.2就是固態硬碟的介面或者插槽,它們都有兩種型別,一種是b型,一種是m型。就目前來講,大多數的m.2固態硬碟是兩種插槽都相容的,所以它是有兩個缺口的。如果仔細對比,會發現b型有6個金手指,m型有5個金手指,另外m型支援更高的匯流排標準,所以m型插槽常見於中高階的電腦上。m.2固態硬碟在長度上也有不...

M2專案測試

更為詳細的測試報告,我們會在後續整理出來。在m1的基礎上,我們新增加了兩個個資料表來存放問答對以及標籤資訊的表 c705question表 與 tag表 具體的實現是 我們分別檢視了這六個 的網頁結構,用多個例子確定了每個 的網頁結構,我們發現,我們需要提取的標籤 摘要等資訊,都固定地存放在html...