leetcode 萬用字元匹配

2021-10-04 13:58:53 字數 1295 閱讀 1300

給定乙個字串 (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 ...