33 字串匹配演算法

2022-03-24 12:46:48 字數 715 閱讀 4027

題目: 給乙個很長字串,要求找到符合要求的字串,例如目的串123,1***3***2,12****3這些都要找出來

解: 這題的意思是,例如給定目的串s="abc",那麼在這個很長的字串中尋找子字串,這個子字串中滿足s中的每個字元都要出現,並且s中的某乙個字元只出現1次。

設待匹配字串長度位n,模式字串長度位m

1。對待匹配字串的每乙個字元進行m次匹配,記錄下s中每個字元出現個數,當個數都》=1時結束,此時是滿足條件的1個子字串,然後從這個子字串的下乙個字元開始匹配

時間是o(m*n)

2.hash的方法。對目的串hash,遍歷待匹配字串,對每個字元hash,若某個子字串滿足目的串的每個字元hash值都出現就是

3。與此題相類似:

就是給乙個很長的字串str 還有乙個字符集比如 找出str裡包含的最短子串。

要求o(n)?

比如,字符集是a,b,c,字串是abdcaabcx,則最短子串為abc。

用兩個變數 front rear 指向乙個的子串區間的頭和尾

用乙個int cnt[255]=記錄當前這個子串裡 字符集a,b,c 各自的個數,

乙個變數sum記錄字符集裡有多少個了

rear 一直加,更新cnt和sum的值,直到 sum等於字符集個數

然後front++,直到cnt裡某個字元個數為0,這樣就找到乙個符合條件的字串了

繼續前面的操作,就可以找到最短的了。

33 字元匹配演算法

33 實現乙個挺高階的字元匹配演算法 給一串很長字串,要求找到符合要求的字串,例如目的串 123 1 3 2 12 3 這些都要找出來 其實就是類似一些和諧系統。參考這題的真正意思就是,給你乙個目標串,如 123 只要乙個字串裡面同時包含1 2和3,那麼這個字元 串就匹配了。系統越和諧,說明錯殺的可...

第四周 3 3 字串匹配

時間限制 1 sec 空間限制 256 mb 給定乙個大串 a 和乙個模式串 b,求 b 在 a 的哪些位置出現 輸出這些出現位置的起始位置,下標從 0 開始 第一行乙個正整數 n,表示串 a 的長度。第二行包含乙個長度為 n 的串 a。第三行乙個正整數 m,表示串 b 的長度。第四行包含乙個長度為...

(演算法練習) 201409 3字串匹配

良心第三題 暴力匹配的,如果遇到不敏感,那麼把原始的字串和後面輸入需要匹配的字串都轉成小寫來處理 同樣也可都轉成大寫 在匹配的時候內層套個while迴圈,從每一位開始看能不能匹配到標準字串的末尾,成功,break,記錄這個字串 ac include include include include u...