首頁 > 軟體

JavaScript前端學演演算法題解LeetCode最大重複子字串

2022-10-02 14:01:05

這是LeetCode的第1668題:最大重複子字串

最大重複子字串

給你一個字串 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" 的子字串。

解題思路

如果 wordsequence,的字串,那word的長度肯定是小於等於sequence;當word的長度大於sequence的長度。或者sequence不包含word那就可以直接返回 0;初始化count為重複值,初始化一個變數str,讓他等於word,當str的長度小於等於sequence就可以判斷sequence是否包含str,如果包含那就令 str=str+word並且count自加1,如果不包含就返回count

具體步驟可以拆分為:

  • 第一步:判斷 當word的長度大於sequence的長度或者sequence不包含word就返回 0
  • 第二步:初始化count為重複值,初始化一個變數str,當str的長度小於等於sequence的長度就進入迴圈,否則返回count
  • 第三步:迴圈體內判斷sequence是否包含str,如果包含就令str=str+word,且讓count自增1;否則直接返回count
var maxRepeating = function(sequence, word) {
    if(word.length>sequence.length || !sequence.includes(word)) return 0
    let str = word
    let count = 0
    while(str.length<=sequence.length){
        if(sequence.includes(str)){
            str+=word
            count++
        }else{
            return count
        }
    }
    return count
};

知識點

includes:用來判斷一個陣列或者字串是否包含一個指定的值,根據情況,如果包含則返回 true,否則返回 false

repeat()str=str+word可以用repeat來代替,repeat方法構造並返回一個新字串,該字串包含被連線在一起的指定數量的字串的副本。

以上就是JavaScript前端學演演算法題解LeetCode最大重複子字串的詳細內容,更多關於JavaScript演演算法最大重複子字串的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com