LeetCode 44 萬用字元匹配
給定一個字串 (s) 和一個字元模式 (p) ,實現一個支援 '?' 和 '*' 的萬用字元匹配。
'?' 可以匹配任何單個字元。
'*' 可以匹配任意字串(包括空字串)。
兩個字串完全匹配才算匹配成功。
說明:
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
解題思路:
我們用i和j分別標記s和p的第一個字元下標,即都初始化為0。用istart和jstart分別標記s和p中'*'匹配過的位置,即初始化為-1。
和普通字串匹配的思路差不多,已經匹配成功的部分就不再考慮了,所以要用i和j標記當前正在比較的字元;但是最近匹配過的'*'可能會被重複使用去匹配更多的字元,所以我們要用istart和jstart分別標記s和p中最近匹配過'*'的位置。
相關文章
- LeetCode刷題記126-44. 萬用字元匹配LeetCode字元
- Python3 - 用Shell萬用字元匹配字串Python字元字串
- OpenJudge 帶萬用字元的字串匹配字元字串匹配
- leetcode之萬用字元LeetCode字元
- lintcode 萬用字元匹配 ac程式碼字元C程式
- 面試常遇到的萬用字元匹配的兩個小問題總結面試字元
- 順序結構儲存串實現串萬用字元匹配的演算法字元演算法
- 匹配空白字元正規表示式字元
- php正則匹配所有違規字元PHP字元
- 正則匹配指定字元之前的字串字元字串
- [MYSQL-8]用萬用字元進行過濾MySql字元
- jQuery匹配具有指定字元的選擇器jQuery字元
- 正規表示式匹配雙位元組字元字元
- 萬用字元詳解字元
- Linux萬用字元Linux字元
- Linux 萬用字元Linux字元
- leetcode - 正規表示式匹配LeetCode
- 正規表示式匹配以指定字元開頭和結尾的字元字元
- 匹配純英文字元正規表示式字元
- 【python技巧】文字處理-re庫字元匹配Python字元
- 匹配雙位元組字元的正規表示式字元
- jquery匹配具有指定字元的選擇器功能jQuery字元
- Excel 2010 SQL應用032 字元範圍的模糊匹配查詢ExcelSQL字元
- Ubuntu萬用字元的使用Ubuntu字元
- 命令列萬用字元教程命令列字元
- RabbitMQ-萬用字元模式MQ字元模式
- dataframe 萬用字元篩選字元
- 泛型概述-萬用字元泛型字元
- SQL Like萬用字元使用SQL字元
- java的classpath萬用字元Java字元
- Linux萬用字元(轉)Linux字元
- 【LeetCode 28_字串_匹配】Implement strStr()LeetCode字串
- Linux 中grep命令如何匹配中文字元Linux字元
- Linux Shell 萬用字元、元字元、轉義符使用Linux字元
- [Leetcode]44.跳躍遊戲Ⅰ&&45.跳躍遊戲ⅡLeetCode遊戲
- 萬用字元與特殊符號字元符號
- shell命令中的萬用字元字元
- Struts(三) 萬用字元講解字元