LeetCode 686 重复添加字符串匹配[字符串] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 686 重复添加字符串匹配[字符串] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道看起来很简单的题目,解题的关键在于分析。首先考虑两种情况,b的长度比a短,或者b的长度比a长,比a短还能是a的子串,只能说b是a的子串或者是两个a连接的中间部分,如果b的长度比a的长度长,a首先得叠加到至少大于等于b的长度,此时b也可能是当前叠加得到的两个a连接的中间部分。所以,综上所述,不管叠加几次,我们都能知道最大的叠加次数是多少,既然这样每次从1开始一直遍历到最大叠加次数,查看中间是否有b,有则返回次数无则继续。最终没找到返回-1,代码如下:
class Solution
public:
int repeatedStringMatch(string a, string b)
string temp = a;
// 翻转次数
int count = 1;
int lenA = a.size(), lenB = b.size();
// 最多翻转次数
int maxCount = lenB / lenA;
while(count <= maxCount + 2)
if(temp.find(b) != string::npos)
return count;
temp += a;
count ++;
return -1;
;
时间复杂度:O(n/m)
空间复杂度:O(1)
以上是关于LeetCode 686 重复添加字符串匹配[字符串] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
Python|Leetcode《686》|重复叠加字符串匹配
LeetCode - 686 -重复叠加字符串匹配 -Java
LeetCode 686. 重复叠加字符串匹配 / 1044. 最长重复子串(字符串哈希) / 1705. 吃苹果的最大数目
LeetCode 686. 重复叠加字符串匹配 / 1044. 最长重复子串(字符串哈希) / 1705. 吃苹果的最大数目