給定乙個字串,包括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...