carloscn / structstudy

Leetcode daily trainning by using C/C++/RUST programming.
4 stars 1 forks source link

leetcode1668:最大重复子字符串(maximum-repeating-substring) #263

Open carloscn opened 1 year ago

carloscn commented 1 year ago

问题描述

给你一个字符串 sequence ,如果字符串 word 连续重复 k 次形成的字符串是 sequence 的一个子字符串,那么单词 word 的 重复值为 k 。单词 word 的 最大重复值 是单词 word 在 sequence 中最大的重复值。如果 word 不是 sequence 的子串,那么重复值 k 为 0 。

给你一个字符串 sequence 和 word ,请你返回 最大重复值 k 。

示例 1:

输入:sequence = "ababc", word = "ab" 输出:2 解释:"abab" 是 "ababc" 的子字符串。

示例 2:

输入:sequence = "ababc", word = "ba" 输出:1 解释:"ba" 是 "ababc" 的子字符串,但 "baba" 不是 "ababc" 的子字符串。

示例 3:

输入: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

carloscn commented 1 year ago

问题分析

pub fn max_repeating(sequence: &str, word: &str) -> i32
{
    let mut ret:i32 = 0;

    if sequence.len() < 1 || word.len() < 1 {
        return ret;
    }

    let seq_dup:Vec<char> = sequence.chars().collect();
    let word_dup:Vec<char> = word.chars().collect();

    let mut i:usize = 0;
    while i < seq_dup.len() - word_dup.len() {
        let mut flag:bool = true;
        for j in 0..word_dup.len() {
            if word_dup[j] != seq_dup[i + j] {
                flag = false;
                break;
            }
        }
        if flag == true {
            ret += 1;
        }
        i += 1;
    }

    return ret;
}
carloscn commented 1 year ago

code

https://review.gerrithub.io/c/carloscn/structstudy/+/556293 https://github.com/carloscn/structstudy/commit/f3b97ea5beb9d23d43aa1494463c8d7e99d8a452