C++课后习题训练记录Day139
1.练习项目 :
问题描述
wzy 给了你一个字符串,请你计算一下这个字符串最多是由多少个相同子串拼成的。
注意:原串 abcdabcd,则 abcd 出现两次,则该字符串最多是由两个相同子串拼成的。
输入格式
第一行一个字符串 s 。
输出格式
输出一个数,表示这个字符串最多是由多少个相同子串拼成的。
2.选择课程
在蓝桥云课中选择题库,选择题号3160并开始练习。
3.开始练习
(1)源码 :
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6+10;
char s[N];
int nex[N];
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>s+1;int n=strlen(s+1);
nex[0]=nex[1]=0;
for(int i=2,j=0;i<=n;i++){
while(j&&s[i]!=s[j+1])j=nex[j];
if(s[i]==s[j+1])j++;
nex[i]=j;
}
int t=n-nex[n];
if(t!=n&&n%t==0)cout<<n/t<<'\n';
else cout<<1<<'\n';
return 0;
}
(2)检验结果
对此代码进行检验,检验后无报错,提交此代码,判题结果为正确100分。
(3)练习心得:注意每段代码末尾的分号是否存在 ,如不存在则需即使补充;输入法 是否切换为英语模式;语法是否错误。
更多推荐
所有评论(0)