LeetCode每日一题——重复的子字符串

题目要求:

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

示例 1:

复制代码
输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。

示例 2:

复制代码
输入: s = "aba"
输出: false

示例 3:

复制代码
输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

代码实现:

bool repeatedSubstringPattern(char* s) {

int n = strlen(s);//获取字符串s的长度

for (int i = 1; i * 2 <= n; ++i) {//子字符串最少重复两次得到原字符串,防止越界访问

if (n % i == 0) {

bool match = true;//对match初始化为true

for (int j = i; j < n; ++j) {

if (s[j] != s[j - i]) {

match = false;

break;//不相等时跳出内层循环,避免无效试错

}

}

if (match) {

return true;//此语句执行后,则不会执行之后的程序

}

}

}

return false;//所有子串尝试后都不匹配,返回false

}

作者:力扣官方题解

来源:力扣(LeetCode)

相关推荐
m0_66257797几秒前
模板编译期哈希计算
开发语言·c++·算法
m0_66257797几秒前
C++代码静态检测
开发语言·c++·算法
阿贵---1 分钟前
编译器命令选项优化
开发语言·c++·算法
minji...1 分钟前
Linux 进程间通信(一)进程间通信与匿名管道
linux·运维·服务器·数据结构·数据库·c++
add45a1 分钟前
分布式计算C++库
开发语言·c++·算法
2401_894241928 分钟前
基于C++的数据库连接池
开发语言·c++·算法
阿贵---8 分钟前
C++中的适配器模式
开发语言·c++·算法
木井巳12 分钟前
【递归算法】全排列
算法·leetcode·决策树·深度优先·剪枝
dapeng287014 分钟前
C++与Docker集成开发
开发语言·c++·算法
2501_9454235415 分钟前
C++中的策略模式实战
开发语言·c++·算法