459 重复的子字符串

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

这段代码实现了一个用于判断字符串是否可以通过重复某个子串多次来构造的算法。它通过检查所有可能的子串长度来进行验证,如果找到一个符合条件的子串,则返回 true;否则,在遍历完所有可能性后返回 false

class Solution {
public:
    bool repeatedSubstringPattern(string s) {
        //获取字符串长度
        int n=s.size();
        //i表示可能的子串长度
        for(int i=1;i*2<=n;i++){
            //n能被i整除,表示i是可能的子串长度
			if(n%i==0){
                //默认为成立
				bool match=true;
                //遍历i到n-1字符串
				for(int j=i;j<n;j++){
                    //如果当前字符与前i个字符不同,则不匹配
					if(s[j]!=s[j-i]){
						match=false;
						break;
					}
				}
                //i到n-1字符如果都匹配
				if(match){
                    //返回true
					return true;
				}
			}	
		}
        //如果遍历了所有可能的子串都不匹配,返回false
		return false;
    }
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值