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