瑞神今年大三了,他在寒假學會了英文的26個字母,所以他很興奮!於是他讓他的朋友tt考考他,tt想到了乙個考瑞神的好問題:給定乙個字串,從裡面尋找 連續的26個大寫字母 並輸出!
但是轉念一想,這樣太便宜瑞神了,所以他加大了難度:現在給定乙個字串,字串中包括26個大寫字母和特殊字元』?』,特殊字元』?'可以代表任何乙個大寫字母。
現在tt問你是否存在乙個 位置連續的且由26個大寫字母組成的子串 ,在這個子串中每個字母出現且僅出現一次,如果存在,請輸出從左側算起的第乙個出現的符合要求的子串,並且要求,如果有多組解同時符合位置最靠左,則輸出字典序最小的那個解!如果不存在,輸出-1!
這下hrz矇圈了,他剛學會26個字母,這對他來說太難了,所以他來求助你,請你幫他解決這個問題,報酬是可以幫你打守望先鋒。
說明:字典序 先按照第乙個字母,以 a、b、c……z 的順序排列;如果第乙個字母一樣,那麼比較第二個、第三個乃至後面的字母。如果比到最後兩個單詞不一樣長(比如,sigh 和 sight),那麼把短者排在前。例如
ab??efghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz
abdcefghijklmnopqrstuvwxyz
上面兩種填法,都可以構成26個字母,但是我們要求字典序最小,只能取前者。注意,題目要求的是 第乙個出現的, 字典序最小的 !
input輸入只有一行,乙個符合題目描述的字串。
output輸出只有一行,如果存在這樣的子串,請輸出,否則輸出-1
sample input1abc??fghijk???opqr?tuvwxy?
sample output1abcdefghijklmnopqrstuvwxyz
sample input2aabcdefghijklmnopqrstuvw??m
sample output2設輸入的字串為str。-1
建立乙個陣列visit[26]。若visit[i]=true,則說明第i個字母存在。
for
(left從0遍歷到str.length -26)
if(不符合要求)
continue
;for
(i從left到right遍歷)
輸出str;
}
#include
#include
using
namespace std;
string str;
bool visit[26]
;//visit[0]使用,代表'a'
bool solve;
int left, right;
int cnt;
void
print()
cout << endl;
}int
find()
intmain()
//cout << "1" << endl;if(
!solve)
continue
;//cout << "left: " << left << " " << "right: " << right << endl;
//print();
for(
int i = left; i < right; i++)}
//cout << "2" << endl;
for(
int i = left; i < right; i++
) cout << str[i]
; cout << endl;
return0;
} cout <<
"-1"
<< endl;
return0;
}
WEEK8 csp模擬 B HRZ學英語
瑞神今年大三了,他在寒假學會了英文的26個字母,所以他很興奮!於是他讓他的朋友tt考考他,tt想 到了乙個考瑞神的好問題 給定乙個字串,從裡面尋找連續的26個大寫字母並輸出!但是轉念一想,這樣太便宜瑞神了,所以他加大了難度 現在給定乙個字串,字串中包括26個大寫字母和特殊字 符 特殊字元 可以代表任...
week8 CSP模擬B HRZ學英語
給定乙個只含26個大寫英文本母和 的字串,找出乙個連續的且由26個大寫字母組成的串,在這個子串中每個字母都只出現一次 可以當做任何字母 如果有,輸出最靠左且字典序最小的子串 如果沒有 輸出 1 input 乙個字串 len 106 output 子串或 1 sample input 1 abc?fg...
程式設計思維(CSP模擬題)A HRZ 的序列
相較於咕咕東,瑞神是個起早貪黑的好孩子,今天早上瑞神起得很早,刷b站時看到了乙個序列a,他對這個序列產生了濃厚的興趣。他好奇是否存在乙個數k,使得一些數加上k,一些數減去k,一些數不變,使得整個序列中所有的數相等。其中對於序列中的每個位置上的數字,至多只能執行一次加運算或減運算或是對該位置不進行任何...