找子串题解

找子串

题目描述:

给定两个字符串a和b,我们定义a*b表示字符串的连接。例如,如果a=”abc”,b=”def”,那么a*b=“abcdef”,如果这种连接是多重的,可以用幂的形式来定义:a^0=“” (空串),a^(n+1)=a*(a^n)。

输入格式:

只有一行表示一个字符串s,长度至少为1,不超过100

输出格式:

输出最大的n值,如s=a^n(a是某个字符串)

样例输入:
样例1:
abcd

样例2:
aaaa

样例3:
ababab
样例输出:
样例1:
1

样例2:
4

样例3:
3

提示:

本题要用到C++字符串的一些命令。

1)定义字符串类型

    string  s;      //长度无限长

2)读入一行字符串

    cin >> s;   //读到空格为止

    getline ( cin ,  s )   //以行为单位,读入整行内容给 s

3)求字符串的长度:

     s.length( )

4)查看字符串的某一位置的字符:

      s [ i ]

5)取字符串当中的某一段子串:

     s.substr( i , 3 )   //在s字符串从i位开始连续取长度为3的子串。

6)字符串的比较:

     两串字符串s1和s2,可以直接用>、<、==等关系运算符进行比较。

时间限制: 1000ms
空间限制: 256MB

#include <bits/stdc++.h>
using namespace std;
string s,s1,s2; 
long long a,p,k,z,t,n;
int main() {
	cin>>s;
	for(int i=1;i<=s.size();i++){
		s1=s.substr(0,i);
		s2="";
		for(int j=1;j<=s.size()/s1.size();j++){
			s2+=s1;
		}
		if(s==s2){
			cout<<s.size()/s1.size();
			return 0;
		}
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值