本題使用C++的substr方法寫會十分友善
ac代碼如下
#include <iostream>
#include <cmath>
#include <string>
using namespace std;
int main()
{
string str;
cin>>str;
int max1=0;
int count;
for(int i=1;i<=str.length();i++){
count=1;
string sub_str=str.substr(0,i);
if(str.length()%i!=0)continue;
for(int j=i;j<str.length();j+=i){
string sub_str1=str.substr(j,i);
if(sub_str==sub_str1)count++;
}
if(count==str.length()/i)max1=max(count,max1);
}
cout<<max1;
}
順便轉載一下string的substr用法
substr有2種用法:
假設:string s = "0123456789";
string sub1 = s.substr(5); //隻有一個數字5表示從下标為5開始一直到結尾:sub1 = "56789"
string sub2 = s.substr(5, 3); //從下标為5開始截取長度為3位:sub2 = "567"
改用法轉自
http://blog.csdn.net/liuchuo/article/details/54599840