給定乙個只含26個大寫英文本母和』?'的字串,找出乙個連續的且由26個大寫字母組成的串,在這個子串中每個字母都只出現一次 '?'可以當做任何字母input如果有,輸出最靠左且字典序最小的子串
如果沒有 輸出"-1"
乙個字串(len<=106)output
子串或"-1"sample input 1
abc??fghijk???opqr?tuvwxy?sample output 1
abcdefghijklmnopqrstuvwxyzsample input 1
aabcdefghijklmnopqrstuvw??msample output 1
-1我的思路:
這道題是要找到一段連續的無重複的26字母序列,且字典序最小。可以設定兩個指標left和right,向右移right,記錄得到的字母和字母數量(當遇到『?』時,字母數量加一,然後接著往後走),當right得到的字母w之前遇到過,則left向右走,直到移到第一次出現的w之後的字母為止。根據這樣的規則,當得到字母數達到26時,滿足條件;或者到最後也未找到結果,則不滿足要求。最後,在處理『?』的問題上,可以建立乙個佇列,對於記錄字母的陣列,從前往後遍歷,遇到未占用的則壓入佇列。在輸出結果時,遇到『?』則從佇列首提取出字母進行輸出。
我的總結:
對於連續的問題,可以利用左右指標的思想來解決。
我的**:
#include
#include
#include
using
namespace std;
string st;
int lef,rig,num=
0,is[26]
;queue<
char
> wen;
void
init()
intmain()
if(!is[
int(st[rig])-
65])else
is[int(st[lef])-
65]=0
; lef++
; num--;}
}if(num==26)
for(
int i=lef;i)else cout<}else cout<<
"-1"
;return0;
}
WEEK8 csp模擬 B HRZ學英語
瑞神今年大三了,他在寒假學會了英文的26個字母,所以他很興奮!於是他讓他的朋友tt考考他,tt想 到了乙個考瑞神的好問題 給定乙個字串,從裡面尋找連續的26個大寫字母並輸出!但是轉念一想,這樣太便宜瑞神了,所以他加大了難度 現在給定乙個字串,字串中包括26個大寫字母和特殊字 符 特殊字元 可以代表任...
Week8 CSP模擬 T1HRZ的序列
相較於咕咕東,瑞神是個起早貪黑的好孩子,今天早上瑞神起得很早,刷b站時看到了乙個序列a,他對這個序列產生了濃厚的興趣。他好奇是否存在乙個數k,使得一些數加上k,一些數減去k,一些數不變,使得整個序列中所有的數相等。其中對於序列中的每個位置上的數字,至多只能執行一次加運算或減運算或是對該位置不進行任何...
程式設計思維(CSP模擬題)B HRZ 學英語
瑞神今年大三了,他在寒假學會了英文的26個字母,所以他很興奮!於是他讓他的朋友tt考考他,tt想到了乙個考瑞神的好問題 給定乙個字串,從裡面尋找 連續的26個大寫字母 並輸出!但是轉念一想,這樣太便宜瑞神了,所以他加大了難度 現在給定乙個字串,字串中包括26個大寫字母和特殊字元 特殊字元 可以代表任...