面試題17 17 多次搜尋

2021-10-12 00:22:11 字數 1117 閱讀 1272

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

輸入:big = "mississippi"

smalls = ["is","ppi","hi","sis","i","ssippi"]

輸出: [[1,4],[8],,[3],[1,4,7,10],[5]]

使用字首樹,用smalls構建一顆字首樹,然後在big中遍歷,為了減少結尾的討論,可以加上乙個其他非字母

big += "^"

class trie:

def __init__(self):

self.root = {}

def insert(self, word, num):

cur = self.root

for w in word:

if w not in cur:

cur[w] = {}

cur = cur[w]

cur['#'] = num

class solution:

def multisearch(self, big: str, smalls: list[str]) -> list[list[int]]:

trie = trie()

root = trie.root

for i in range(len(smalls)):

trie.insert(smalls[i],i)

big += '^'

res = [ for _ in range(len(smalls))]

for i in range(len(big)):

if big[i] in root:

cur = root[big[i]]

for j in range(i+1, len(big)):

if '#' in cur:

if big[j] in cur:

cur = cur[big[j]]

else:

break

return res

lc17 17字串多次搜尋

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

面試題 PHP面試題

建議 比如是系統配置,缺少了無法執行,自然使用 require 如果某一段程式少了,只是少了統計 訪問的,不是必不可少的。可以使用 include 而加不加 once 就是效率上的區別,雖然系統會幫你考慮只包含一次,但系統的判斷會降低效率,因此,更應該在開發之初,把目錄結構調整高好,盡量不使用 on...

面試題 騰訊2012面試題

問題描述 例如手機朋友網有n個伺服器,為了方便使用者的訪問會在伺服器上快取資料,因此使用者每次訪問的時候最好能保持同一臺伺服器。已有的做法是根據serveripindex qqnum n 得到請求的伺服器,這種方法很方便將使用者分到不同的伺服器上去。但是如果一台伺服器死掉了,那麼n就變為了n 1,那...