国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

KMP-重復(fù)子字符串

這篇具有很好參考價(jià)值的文章主要介紹了KMP-重復(fù)子字符串。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Problem: 459. 重復(fù)的子字符串

題目

給定一個(gè)字符串str1, 判斷其是否由重復(fù)的子串構(gòu)成。

例子1:輸入 str1=‘a(chǎn)babab’ ;輸出 true
例子2:輸入 str1=‘a(chǎn)babac’ ;輸出 false

思路

重復(fù)子字符串組成的字符串,其肯定存在一個(gè)后綴和前綴是一樣的,并且這個(gè)后綴其由后綴前面的字符子串組成。所以可以用前綴數(shù)組,先找到每個(gè)位置的最長相等前綴后綴,若最后一個(gè)字符的最長相等前綴后綴值不為零且最長后綴前的字符串長度被原字符串長度整除,那代表該最長后綴就是由前面的字符子串組成,即原字符串也由前面的字符子串組成。

復(fù)雜度

時(shí)間復(fù)雜度:

O ( n ) O(n) O(n)文章來源地址http://www.zghlxwxcb.cn/news/detail-823187.html

空間復(fù)雜度:

O ( n ) O(n) O(n)

Code

class Solution:
    def repeatedSubstringPattern(self, s: str) -> bool:
        def get_next(str1):
            n = len(str1)
            pres = [-1] * (n +1)
            for i in range(n):
                t = pres[i]
                while str1[i] != str1[t] and t!=-1:
                    t = pres[t]
                pres[i+1] = t + 1 
            return pres[1:]
        pres = get_next(s)
        if pres[-1] and len(s) % (len(s)-pres[-1])==0:
            return True
        return False

到了這里,關(guān)于KMP-重復(fù)子字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 字符串匹配算法:KMP

    字符串匹配算法:KMP

    Knuth–Morris–Pratt(KMP)是由三位數(shù)學(xué)家克努斯、莫里斯、普拉特同時(shí)發(fā)現(xiàn),所有人們用三個(gè)人的名字來稱呼這種算法,KMP是一種改進(jìn)的字符串匹配算法,它的核心是利用匹配失敗后的信息,盡量減少模式串與主串的匹配次數(shù)以達(dá)到快速匹配的目的。它的時(shí)間復(fù)雜度是 O(m+n) 字

    2024年02月06日
    瀏覽(25)
  • 【kmp算法】字符串匹配

    kmp算法解決的是字符串匹配的問題,具體來說假定我們要在主串s[ ] 中匹配模式串p[ ],找到匹配到的位置loc; 最自然的想法是暴力寫法 (BF)枚舉主串字符s[ i ] ,和模式串p[ j ]。一個(gè)一個(gè)匹配,如果匹配失敗,i指針回退回起點(diǎn),往前進(jìn)一位,再次進(jìn)行比較,知道匹配成功。

    2024年02月04日
    瀏覽(31)
  • Leetcode的AC指南 —— 字符串/KMP:28.找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo)

    摘要: Leetcode的AC指南 —— 字符串/KMP:28.找出字符串中第一個(gè)匹配項(xiàng)的下標(biāo) 。題目介紹:給你兩個(gè)字符串 haystack 和 needle ,請你在 haystack 字符串中找出 needle 字符串的第一個(gè)匹配項(xiàng)的下標(biāo)(下標(biāo)從 0 開始)。如果 needle 不是 haystack 的一部分,則返回 -1 。 題目介紹 :給你兩

    2024年02月02日
    瀏覽(28)
  • 字符串匹配算法(BF&&KMP)

    字符串匹配算法(BF&&KMP)

    個(gè)人主頁:平行線也會相交 歡迎 點(diǎn)贊?? 收藏? 留言? 加關(guān)注??本文由 平行線也會相交 原創(chuàng) 收錄于專欄【數(shù)據(jù)結(jié)構(gòu)初階(C實(shí)現(xiàn))】 在學(xué)習(xí)這個(gè)算法之前,我們先來看看什么時(shí)字符串匹配算法,簡單來說 有一個(gè)主串和一個(gè)子串,查找子串在主串的位置,然后返回這個(gè)位置

    2023年04月17日
    瀏覽(18)
  • 數(shù)據(jù)結(jié)構(gòu)--字符串的KMP算法

    數(shù)據(jù)結(jié)構(gòu)--字符串的KMP算法

    樸素模式匹配算法: 一旦發(fā)現(xiàn)當(dāng)前這個(gè)子串中某個(gè)字符不匹配,就只能轉(zhuǎn)而匹配下一個(gè)子串(從頭開始) 但我們可以知道: 不匹配的字符之前,一定是和模式串一致的 color{red}不匹配的字符之前,一定是和模式串一致的 不匹配的字符之前,一定是和模式串一致的 我們可以利用

    2024年02月12日
    瀏覽(16)
  • 算法訓(xùn)練day11Leetcode20有效的括號1047刪除字符串中所有相鄰重復(fù)項(xiàng)150逆波蘭表達(dá)式求值

    https://leetcode.cn/problems/valid-parentheses/description/ https://programmercarl.com/0020.%E6%9C%89%E6%95%88%E7%9A%84%E6%8B%AC%E5%8F%B7.html 判斷右括號后忘記pop 括號匹配是使用棧解決的經(jīng)典問題。 如果還記得編譯原理的話,編譯器在 詞法分析的過程中處理括號、花括號等這個(gè)符號的邏輯,也是使用了棧

    2024年01月17日
    瀏覽(20)
  • (字符串 ) 459. 重復(fù)的子字符串——【Leetcode每日一題】

    (字符串 ) 459. 重復(fù)的子字符串——【Leetcode每日一題】

    難度:簡單 給定一個(gè)非空的字符串 s ,檢查是否可以通過由它的一個(gè)子串重復(fù)多次構(gòu)成。 示例 1: 輸入: s = “abab” 輸出: true 解釋: 可由子串 “ab” 重復(fù)兩次構(gòu)成。 示例 2: 輸入: s = “aba” 輸出: false 示例 3: 輸入: s = “abcabcabcabc” 輸出: true 解釋: 可由子串 “abc” 重復(fù)四次構(gòu)

    2024年02月07日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)】字符串匹配|BF算法|KMP算法|next數(shù)組的優(yōu)化

    【數(shù)據(jù)結(jié)構(gòu)】字符串匹配|BF算法|KMP算法|next數(shù)組的優(yōu)化

    字符串匹配算法是在實(shí)際工程中經(jīng)常遇到的問題,也是各大公司筆試面試的??碱}目,本文主要介紹BF算法(最好想到的算法,也最好實(shí)現(xiàn))和KMP算法(最經(jīng)典的) BF算法,即暴力(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是將目標(biāo)S的第一個(gè)字符與模式串T的第一

    2024年02月04日
    瀏覽(25)
  • 【LeetCode每日一題】2182. 構(gòu)造限制重復(fù)的字符串

    【LeetCode每日一題】2182. 構(gòu)造限制重復(fù)的字符串

    2024-1-13 2182. 構(gòu)造限制重復(fù)的字符串 思路: 按照字符出現(xiàn)次數(shù)從高到低的順序進(jìn)行重復(fù),通過維護(hù)一個(gè)指針 j 來尋找下一個(gè)非零出現(xiàn)次數(shù)的字母。同時(shí),利用 StringBuilder 對象可以高效地構(gòu)建字符串,避免頻繁的字符串拼接操作 首先,創(chuàng)建一個(gè)長度為26的數(shù)組 cnt ,用于統(tǒng)計(jì)字

    2024年01月18日
    瀏覽(25)
  • 算法刷題-字符串-重復(fù)的子字符串

    算法刷題-字符串-重復(fù)的子字符串

    KMP算法還能干這個(gè) 力扣題目鏈接 給定一個(gè)非空的字符串,判斷它是否可以由它的一個(gè)子串重復(fù)多次構(gòu)成。給定的字符串只含有小寫英文字母,并且長度不超過10000。 示例 1: 輸入: “abab” 輸出: True 解釋: 可由子字符串 “ab” 重復(fù)兩次構(gòu)成。 示例 2: 輸入: “aba” 輸出: False 示

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包