LeetCode#44. Wildcard Matching

来源:互联网 发布:印章制作软件app 编辑:程序博客网 时间:2024/03/28 17:47
  • 题目:给定两个字符串,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();    }}
原创粉丝点击