題目
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 '.' 和 '*' 的正規表示式匹配。
'.' 匹配任意單個字元
'*' 匹配零個或多個前面的那乙個元素
所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。
說明:s 可能為空,且只包含從 a-z 的小寫字母。
p 可能為空,且只包含從 a-z 的小寫字母,以及字元 . 和 *。
示例 1
:輸入:
s ="aa"
p ="a"
輸出:false
解釋:"a" 無法匹配 "aa" 整個字串。
示例 2
:輸入:
s ="aa"
p ="a*"
輸出:true
解釋: 因為 '*' 代表可以匹配零個或多個前面的那乙個元素, 在這裡前面的元素就是 'a'。因此,字串 "aa" 可被視為 'a' 重複了一次。
示例 3
:輸入:
s ="ab"
p =".*"
輸出:true
解釋:".*" 表示可匹配零個或多個('*')任意字元('.')。
示例 4
:輸入:
s ="aab"
p ="c*a*b"
輸出:true
解釋: 因為 '*' 表示零個或多個,這裡 'c' 為 0 個,
'a' 被重複一次。因此可以匹配字串 "aab"。
示例 5
:輸入:
s ="mississippi"
p ="mis*is*p*."
輸出:false
方案:考慮 「.」 和 "*"的基本位置class
solution
elseif(
(!s_empty && p_empty)
)elseif(
(s_empty &&
!p_empty)
)else
if(p.
length()
>
1&& p.
charat(1
)=='*')
}else
else
if(p.
length()
>1)
indexs++;}
return
ismatch
(s.substring
(indexs)
, p.
substring(2
));}
else
if(p.
charat(0
)=='.'&& p.
charat(1
)=='*')
indexs++;}
return
ismatch
(s.substring
(indexs)
, p.
substring(2
));}
}}return
false;}
}
官方題解:class
solution
else
}}
總結: 演算法筆記 10 雜湊表
雜湊錶用的是陣列支援下標隨機訪問資料的特性,所以雜湊表其實就是陣列的一種擴充套件,由陣列演化而來。通過雜湊函式將元素的鍵值對映為下標,然後將資料儲存在陣列對應下標的位置。我們按照鍵值查詢元素時,我們使用同樣的雜湊函式,將鍵值轉化為陣列下標,從對應的陣列下標位置取資料。雜湊函式計算得到的雜湊值必須是乙...
LeetCode10 正規表示式
給你乙個字串 s 和乙個字元規律 p,請你來實現乙個支援 和 的正規表示式匹配。匹配任意單個字元 匹配零個或多個前面的那乙個元素 所謂匹配,是要涵蓋 整個 字串 s的,而不是部分字串。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例...
leetcode初級演算法 鍊錶
題目源自leetcode,方法都是自 cai 己 ji 寫的,可能比較符合菜雞們的思路 鍊錶是做到現在,感覺自己最拉垮的一節,資料結構真的都還給老師了 請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點。傳入函式的唯一引數為 要被刪除的節點 示例 1 輸入 head 4,5,1,9 node...