LeetCode—— 686 重复重叠字符串匹配
程序员文章站
2022-05-29 13:53:11
...
问题描述
给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。
举个例子,A = "abcd",B = "cdabcdab"。
答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。
注意:
A
与 B
字符串的长度在1和10000区间范围内。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/repeated-string-match
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
执行结果
代码描述
思路:首先A重叠多少次,得到S, 且S中包含子串B。 也就是S = [A头+A+A...+A尾] 中包含B。 也就是说,S的总长度<= 2A + B。
整理得到:count 个A的长度 - 2个A的长度 <= B的长度。即(count-2)*lenA <= lenB.
class Solution {
public:
int repeatedStringMatch(string A, string B) {
string s = A;
int count = 1;
int lenA = A.size(), lenB = B.size();
while((count - 2)*lenA <= lenB)
{
if(A.find(B) != -1)
return count;
A += s;
++count;
}
return -1;
}
};
上一篇: Python 直接赋值、浅拷贝和深拷贝
推荐阅读
-
Leetcode刷题记录——面试题48. 最长不含重复字符的子字符串
-
Leetcode 剑指 Offer 48. 最长不含重复字符的子字符串
-
LeetCode 459. 重复的子字符串 | Python
-
[类似字符串子串匹配算法KMP算法]无重复字符的最长子串
-
LeetCode3 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
-
LeetCode—— 686 重复重叠字符串匹配
-
leetcode 3 最长不含重复字符的子字符串
-
【LeetCode】字符串分类之无重复字符的最长子串
-
算法题精讲-leetcode3-给定字符串中无重复字符的最长子串
-
leetcode打卡10:题号:3 无重复字符的最长子串,给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。