牛客網 子串

2021-09-27 02:02:48 字數 890 閱讀 2486

解題思路:

模擬出每乙個進製形成的字串然後kmp就可以了!

好像用string直接find也行

#include#include#include#include#include#includeusing namespace std;

const int maxn = 1000005;

char t[maxn];

char s[maxn];

vectorv;

int k;

/*next的含義: x[i-next[i]...i-1] = x[0...next[i]-1]

即,從i-next[i]到i-1這一段距離的字串與從0到next[i]-1這一段字串相等

next[i]就是以i為字尾的所有字串與整個字串的最長公共字首長度

next[i]滿足x[i-z...i-1] = x[0...z-1]的z的最大值

0 1 2 3 4 5 6 7 8

a b c d a b c a b

-1 0 0 0 0 1 2 3 1

*/void kmp_pre(char x, int m, int next)

}// cout <

}// s[++cnt]='\n';

// cout <

if(kmp_count(t+1,len,s+1,cnt))

}if(flag)

printf("yes\n");

else

printf("no\n");

return 0;

}

牛客網 子串計算

題目描述 給出乙個01字串 長度不超過100 求其每乙個子串出現的次數。輸入描述 輸入包含多行,每行乙個字串。輸出描述 對每個字串,輸出它所有出現次數在1次以上的子串和這個子串出現的次數,輸出按字典序排序。樣例輸入 10101 樣例輸出 0 2 01 2 1 3 10 2 101 2 思路分析 in...

牛客網子段乘積

新增鏈結描述 include using namespace std typedef long long ll const int mod 998244353 ll quick ll a,ll b 快速冪 快速冪的迭 法 return ret 1 初始令ans 1,用來存放累積的結果。2 判斷b的二...

牛客網 數串

設有n個正整數,將他們連線成一排,組成乙個最大的多位整數。如 n 3時,3個整數13,312,343,連成的最大整數為34331213。如 n 4時,4個整數7,13,4,246連線成的最大整數為7424613。有多組測試樣例,每組測試樣例包含兩行,第一行為乙個整數n n 100 第二行包含n個數 ...