1. 程式人生 > >LeetCode#44. Wildcard Matching

LeetCode#44. Wildcard Matching

  • 題目:給定兩個字串,s為待匹配字串,p為模式字串
    • 匹配規則: ‘?’能匹配任何單個字元,’*’能匹配任何字元序列包括空字元null
  • 難度:Hard
  • 思路:一開始思路方向是有的,但是分情況討論沒有理清楚,最後忍不住看了discuss,在原始碼上稍微優化了一下
  • 程式碼:
public class Solution {
    public boolean isMatch(String s, String p) {

       int len1 = 0;//s的長度計數器
       int len2 = 0;//p的長度計數器
       int starIndex = -1;
       int
match = 0;//加上match是因為*可以匹配null,但是?只能匹配單個字元 while(len1 < s.length()){ if(len2 < p.length() && (p.charAt(len2) == '?' || (s.charAt(len1) != '*' &&s.charAt(len1) == p.charAt(len2)))){ len1++; len2++; }else if(len2 < p.length() && p.charAt(len2) == '*'
){ starIndex = len2; match = len1; len2++; }else if(starIndex != -1){ len2 = starIndex + 1; match++; len1 = match; }else{ return false; } } while(len2 < p.length() && p.charAt(len2) == '*'
){ len2++; } return len2 == p.length(); } }