问题描述:(其实这个题是《算法竞赛入门经典上》的5.1.3题)
如果一个字符串可以有某个长度为K的字符串重复多次得到,我们说该串一k为周期,例如abcabcabcabc以3为周期,(注意它也可以以6和12为周期)。输入一个长度不超过80 的串,输出它的最小周期。
样列输入:HoHoHo
样列输出:2
分析:
我们可以从小到大枚举各个周期;一旦符合就输出。
代码:
- #include <iostream>
- using namespace std;
- int main(int argc, char *argv[])
- {
- char a[100];
- int i,j,len;
- cin>>a;
- len=strlen(a);
- for(i=1;i<=len;i++)
- if(len%i==0)
- {
- int ok=1;
- for(j=i;j<len;j++)
- if(a[j]!=a[j%i]){
- ok=0;
- break;
- }
- if(ok){cout<<i<<endl;break;}
- }
- return 0;
- }
转自http://blog.csdn.net/zhaochengyuan/article/details/7855342