给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 重复值为 k 。单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串,那么重复值 k 为 0 。
给你一个字符串 sequence 和 word ,请你返回 最大重复值 k 。
输入:sequence = "ababc", word = "ab"
输出:2
解释:"abab" 是 "ababc" 的子字符串。
输入:sequence = "ababc", word = "ba"
输出:1
解释:"ba" 是 "ababc" 的子字符串,但 "baba" 不是 "ababc" 的子字符串。
输入:sequence = "ababc", word = "ac"
输出:0
解释:"ac" 不是 "ababc" 的子字符串。
1 <= sequence.length <= 100
1 <= word.length <= 100
sequence 和 word 都只包含小写英文字母。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/maximum-repeating-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
这道题直接利用find函数进行查找,如果找到一组就令结果加一,最后返回结果即可。
- class Solution {
- public:
- int maxRepeating(string sequence, string word) {
- int ans = 0;
- string cur = word;
- while(sequence.find(cur) != string::npos)
- {
- ++ ans;
- cur += word;
- }
- return ans;
- }
- };
npos是一个常数,用来表示不存在的位置,类型一般是std::container_type::size_type。
许多容器都提供这个东西。取值由实现决定,一般是-1,这样做,就不会存在移植的问题了。npos表示string的结束位子,是string::size_type 类型的,也就是find()返回的类型。
还有vector
返回一个名为 string::npos 的特殊值,说明查找没有匹配。
例如:
- string str;
-
- pos=str.find_first_of("h");
-
- if(pos!=string::npos)
-
- {..
-
- cout<<"找到了h字符"<
-
- }