給定乙個字串 (s) 和乙個字元模式 § ,實現乙個支援 『?』 和 『*』 的萬用字元匹配。
『?』 可以匹配任何單個字元。
『*』 可以匹配任意字串(包括空字串)。
兩個字串完全匹配才算匹配成功。
說明:s 可能為空,且只包含從 a-z 的小寫字母。
p 可能為空,且只包含從 a-z 的小寫字母,以及字元 ? 和 *。
示例 1:
輸入:
s = "aa"
p = "a"
輸出: false
解釋: "a" 無法匹配 "aa" 整個字串。
示例 2:
輸入:
s = "aa"
p = "*"
輸出: true
解釋: '*' 可以匹配任意字串。
示例 3:
輸入:
s = "cb"
p = "?a"
輸出: false
解釋: '?' 可以匹配 'c', 但第二個 'a' 無法匹配 'b'。
示例 4:
輸入:
s = "adceb"
p = "*a*b"
輸出: true
解釋: 第乙個 '*' 可以匹配空字串, 第二個 '*' 可以匹配字串 "dce".
示例 5:
輸入:
s = "acdcb"
p = "a*c?b"
輸入: false
思路:貪心演算法雙指標
用兩個指標istar和jstar標記用』*『匹配過的位置,i和j遍歷兩個字串
在匹配過程中,有幾種情況
1.對應位置字元匹配或p中是』?』,i和j前進
2.p中是,標記星號匹配的位置,j繼續前進
3.曾經用星號匹配過,繼續用該星號匹配,i,j前進,istar重新標記
4.不符合以上 情況,返回false
遍歷完s字串後,p中可能剩有元素,除非其中全是星號,否則不匹配
class
solution
else
if(p[j]
=='*'
)else
if(jstar!=-1
)else
return
false;}
for(
int k=j;k)return
true;}
};
Leetcode之萬用字元匹配
給定乙個字串 s 和乙個字元模式 p 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例 1 輸入 s aa p a ...
萬用字元匹配 LeetCode44
給定乙個字串 s 和乙個字元模式 p 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 示例 輸入 s aa p 輸出 true 解釋 可以匹配任意字串。dp陣列的含義 dp i j 表示字串中前i個字元和字元模式中前j個字元是...
dp 萬用字元匹配leetcode44
這一題是劍指offer裡面的題目,但是書本裡的解法自頂向下,不太好理解。假設string長度為s,pattern長度為p,設定狀態dp,為 dp s 1 p 1 狀態含義 dp i j 表示pattern的1到j位是否匹配s的1 i位 初始狀態 dp 0 0 1 dp 0 i p i dp 0 i ...