给定一个字符串S,只由k种小写字母组成。现在给定一个长度L,要求统计一下S有多少种不同的长度为L的子段(S中连续的几个字符)。
输入
单组测试数据。
第一行两个整数L和k。(L>=1,1<=k<=26,k^L<=2*10^7)
第二行一个字符串S。(1<=|S|<=1000000)
输出
输出一个整数表示答案。
输入样例
1 2
ababab
输出样例
2
解法:暴力即可
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include<iostream> #include<string> #include<set> using namespace std; set<string> S; int main() { int l, k; scanf("%d%d", &l, &k); string s; cin >> s; for(int i = 0; i <= s.length() - l; i++){ string s1 = s.substr(i, l); S.insert(s1); } printf("%lld\n", S.size()); }
|