九章演算法 Uber 面試題 字模式 II

2021-10-10 08:59:07 字數 1877 閱讀 8907

給定乙個​pattern​和乙個字串​str​,查詢​str​是否遵循相同的模式。

這裡遵循的意思是乙個完整的匹配,在乙個字母的​模式​和乙個非空的單詞​str​之間有乙個雙向連線的模式對應。(如果​a​對應​s​,那麼​b​不對應​s​。例如,給定的模式= ​"ab"​, str = ​"ss"​,返回​false​)。

樣例1

輸入:

pattern = "abab"

str = "redblueredblue"

輸出: true

說明: "a"->"red","b"->"blue"

樣例2

輸入:

pattern = "aaaa"

str = "asdasdasdasd"

輸出: true

說明: "a"->"asd"

樣例3

輸入:

pattern = "aabb"

str = "xyzabcxzyabc"

輸出: false

題解:

class

solution

:"""

@param pattern: a string,denote pattern string

@param str: a string, denote matching string

@return: a boolean

"""def

wordpatternmatch

(self

,pattern

,string

):return

self

.is_match

(pattern

,string

,{},

set())

defis_match

(self

,pattern

,string,,

used

):if

notpattern

:return

notstring

char

=pattern[0

]ifcharin:

word=[

char]if

notstring

.startswith

(word

):return

false

return

self

.is_match

(pattern[1

:],string

[len

(word

):],

,used

)foriin

range

(len

(string

)):word

=string[:i

+1]if

word

inused

:continue

used

.add

(word)[

char]=

word

ifself

.is_match

(pattern[1

:],string[i

+1:],,

used

):return

true

del[

char

]used

.remove

(word

)return

false

更多題解參考:九章演算法

九章演算法 Google面試題 字串解碼

給出乙個表示式 s 此表示式包括數字,字母以及方括號。在方括號前的數字表示方括號內容的重複次數 括號內的內容可以是字串或另乙個表示式 請將這個表示式展開成乙個字串。樣例1 輸入 s abc3 a 輸出 abcaaa 樣例2 輸入 s 3 2 ad 3 pf xyz 輸出 adadpfpfpfadad...

九章演算法 Google面試題 內積

描述 給定長度為n的a陣列,長度為k的b陣列 你可以從a陣列裡取k個數 規則如下 即每次可以從a陣列的最左邊或者最右邊取走乙個數,取走的數從陣列中移除 將取出的ai按取出的順序組成c陣列 求b與c的內積最大值 b與c內積為 i 0k 1bi ci 解釋1 a 1,4,3,2,5 b 1,2,3,4 ...

九章演算法面試題32 小球排序

有紅黃藍三色的小球若干排成一列,這些小球進行排序,請使用盡量少的空間和時間。假設順序為紅色黃色藍色。用兩根指標從頭開始遍歷,第一根指標遇到非紅色時停下,如果第二根指標找到第一根指標之後的第乙個紅色停下,交換兩根指標所指顏色。重複上述過程。直到第二根指標找不到任何紅色。此時第一根指標到最後都是黃色或藍...