題目描述
給出乙個長度為n的字串s和q個查詢。對於每乙個查詢,會輸入乙個字串t,你需要判斷這個字串t是不是s的子串。子串的定義就是存在任意下標a第一行兩個數n,q。1<=n,q<=1e5。
第二行乙個長度為n的字串s,所有字元都為小寫拉丁字元。
接下來q行每行乙個字串t。1<=|t|<=50。
輸出描述:
對於每個查詢,如果t是s的字串,輸出」yes」,否則輸出」no」。每個答案佔一行。
示例1輸入
複製8 4
ababcbaa
abac
accb
aaaa
abcba
輸出複製
yesno
yesyes
題目:給定乙個文字串text
,和多個查詢串str[i]
,問str[i]
是否是text
中的乙個子串行
本題的字串其實是子串行
觀察到只有小寫字元,考慮用vectorg[char]
有序儲存字母出現的下標
例如abcdabcdaaabca
,則g['a'] =
對每個詢問串的字母ch
查詢是否在g['ch']
中有大於前乙個字元的位置
int n, m, q, k;
char buf[maxn]
, s[64]
;vector<
int> g[
128]
;int
check
(vector<
int>
& vec,
int key)
signed
main()
;// printf("%d\n", upper_bound(vec.begin(), vec.end(), 2)-vec.begin());
scanf
("%d %d "
,&n,
&q);
scanf
("%s "
, buf)
;for
(int i=
0; buf[i]
; i++
) g[buf[i]].
push_back
(i);
while
(q--)}
printf
("%s\n"
, ok ?
"yes"
:"no");
}
子串查詢 二分
給出乙個長度為n的字串s和q個查詢。對於每乙個查詢,會輸入乙個字串t,你需要判斷這個字串t是不是s的子串。子串的定義就是存在任意下標a第二行乙個長度為n的字串s,所有字元都為小寫拉丁字元。接下來q行每行乙個字串t。1 t 50。輸出描述 對於每個查詢,如果t是s的字串,輸出 yes 否則輸出 no ...
NC105 二分查詢
請實現有重複數字的有序陣列的二分查詢。輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。示例1複製 5,4,1,2,4,4,5 複製 3題解 注意結束條件是left right,應為mid計算是下取整,如果用 left right 的話有可能無法訪問到right ...
NC105 二分查詢
請實現有重複數字的有序陣列的二分查詢。輸出在陣列中第乙個大於等於查詢值的位置,如果陣列中不存在這樣的數,則輸出陣列長度加一。示例15,4,1,2,4,4,5 3 輸出位置從1開始計算 二分查詢 param n int整型 陣列長度 param v int整型 查詢值 param a int整型一維陣...