演算法 字串搜尋字典中匹配單詞的所有位置

2021-10-10 20:29:29 字數 1430 閱讀 1218

給定乙個較長字串big和乙個包含較短字串的陣列smalls,設計乙個方法,根據smalls中的每乙個較短字串,對big進行搜尋。輸出smalls中的字串在big裡出現的所有位置positions,其中positions[i]為smalls[i]出現的所有位置。

leetcode

解題思路:

先將用字典構造字典樹。

然後依次擷取所有下標開始的字元換,進行搜尋。

搜尋的時候,就檢測當前節點是否為乙個單詞的結尾,如果是,就向答案中對應的單詞列表新增當前的下標。

最後將列表轉化為陣列。

class

node

}class

solution

for(

int i =

0; i < big.

length()

; i++

) list<

int[

]> temp =

newarraylist

<

>()

;for

(list

it : res)

return temp.

toarray

(new

int[temp.

size()

]);}

private

void

build

(string s,

int i)

cur = cur.next[c -

'a'];}

cur.isend =

true

; cur.id = i;

}private

void

search

(string word,

int i)}}

}

解題思路:

將單詞放到乙個雜湊表中。

遍歷字串,擷取所有可能的字串進行匹配,並填入對應答案。

列表轉化為陣列。

class

solution

for(

int i =

0; i < smalls.length; i++

)for

(int i =

1; i <= n; i++)}

} list<

int[

]> temp =

newarraylist

<

>()

;for

(list

it : res)

return temp.

toarray

(new

int[temp.

size()

]);}

}

字串匹配演算法 字串匹配演算法總覽

字串匹配在文字處理裡非常重要,我們採用簡潔的python 把以下演算法一一實現並講解。樸素演算法 algorithm rabin karp 演算法 有限自動機演算法 finite automation knuth morris pratt 演算法 kmp algorithm boyer moore ...

字典樹字串匹配

哦,不!你不小心把乙個長篇文章中的空格 標點都刪掉了,並且大寫也弄成了小寫。像句子 i reset the computer.it still didn t boot 已經變成了 iresetthecomputeritstilldidntboot 在處理標點符號和大小寫之前,你得先把它斷成詞語。當然...

字串匹配 暴力搜尋演算法

主要特徵 1 沒有預處理階段 2 需要常量額外空間 3 通常需要模式串視窗向右移動乙個位置 4 可以按照任意順序進行比較 5 搜尋的時間複雜度為 o mn 6 文字字元期望比較次數 2n演算法描述 暴力搜尋演算法由文字串中從0到 n m所有位置的比較組成,無論是否從模式串的起始位置開始,每次匹配過後...