給定乙個字串 (s) 和乙個字元模式 § ,實現乙個支援 『?』 和 『*』 的萬用字元匹配。
『?』 可以匹配任何單個字元。
『*』 可以匹配任意字串(包括空字串)。
說明:
s 可能為空,且只包含從 a-z 的小寫字母。
p 可能為空,且只包含從 a-z 的小寫字母,以及字元 ? 和 *。
輸入:s = 「adceb」
p = 「ab」
輸出: true
解釋: 第乙個 『』 可以匹配空字串, 第二個 '』 可以匹配字串 「dce」.
輸入:s = 「acdcb」
p = 「a*c?b」
輸出: false
class
solution
else
if(jcharat
(j)==
'*')
else
if(istart>-1
)else
}//s中的字元都判斷完畢,則認為s為空,此時需要p為空或者p中只剩下星號的時候,才能成功匹配。
//如果p中剩餘的都是*,則可以移除剩餘的*
while
(jcharat
(j)==
'*')j++
;return j==plen;
}/**
總結 jstart、istart 分別記錄的是p中 *的下標位置、 以及對應的s的下標位置(即當p中指標指到*時,s的指標位置)
因為 *可以匹配任意字元,包括空字元 那麼就先讓 *匹配空字元
此時 p中的指標位置位於*的後一位,s中的指標位置就是剛才istart指標的位置
然後開始進行匹配,如果不匹配 則
p中的指標仍然回到*的後一位,而s中的指標位置+1(這是關鍵:這就代表著+1前s那個位置的字元就被當作是被*給匹配了)
然後 讓*的後一位繼續 與 s中+1位置的那個位置 匹配
以上是關鍵點、關鍵思路 其它細節 自己具體分析。
比如
s : a b c d e f g h p : a b * ? f g h
p : a b * ? f g h
核心思路:
找到p中 *號的位置、以及*號即將要匹配的s中的那個字元的位置。 即 jstart、istart才是關鍵
*/}
萬用字元匹配
implement wildcard pattern matching with support for and matches any single character.matches any sequence of characters including the empty sequence ...
萬用字元匹配
給定乙個輸入字串s 和模式p,p包含萬用字元?與星號 其中輸入s包含小寫字母a z,p包含小寫字母a z與?和星號,可以匹配任一字元,星號 可以匹配多個字元,包括空字元。給定輸入s與p,判斷s 與 p是否完全匹配。example 1 input s aa p a output false expla...
萬用字元匹配
1.遇到s和p都是 則直接返回true 2.判斷邊界條件如果s串已經遍歷完畢,則判斷p串是否便利完畢,如果p串長度大於s串,則判斷大於部分是否都是 如果是則返回true,否則返回false 3.判斷邊界條件如果p串已經便利完畢,則判斷s串是否便利完畢,是則返回true,否則返回false 4.判斷字...