关键信息:
w
o
r
d
word
word重复
k
k
k次形成的字符串,是一个连续字符串。
比如
w
o
r
d
=
word =
word="
a
b
ab
ab " ,重复一次是"
a
b
ab
ab",重复两次是"
a
b
a
b
abab
abab",重复三次是"
a
b
a
b
a
b
ababab
ababab ",以此类推。题目的关键在于重复且连续。
可以看出, s e q u e n c e sequence sequence确实出现了两次" a b ab ab ",但是他们不是连续的,所以 " a b ab ab "最大重复值是 1 1 1,即 w o r d word word的最大重复值是 1 1 1。
(可不看)没理解题目的同学,再看一次题目:
题目描述:给你一个字符串
s
e
q
u
e
n
c
e
sequence
sequence ,如果字符串
w
o
r
d
word
word 连续重复
k
k
k 次形成的字符串是
s
e
q
u
e
n
c
e
sequence
sequence 的一个子字符串,那么单词
w
o
r
d
word
word 的 重复值为
k
k
k 。
class Solution {
public:
int maxRepeating(string sequence, string word) {
//暴力 √
//kmp √
//本题字符串拼接~
int ans =0;//word不在sequence,ans=0。
string temp = word;
int maxSize = sequence.size()/word.size();//word的最大重复值
for(int i=1;i<=maxSize;i++){//
if(sequence.find(temp)==string::npos) break;//没找到
else ans = i;//找到,更新重复值
temp += word;//字符串拼接
}
return ans;
}
};
理解思路很重要!
欢迎读者在评论区留言,作为日更博主,看到就会回复的。
