码迷,mamicode.com
首页 > 其他好文 > 详细

[Leetcode] Wildcard Matching

时间:2015-08-14 00:55:02      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

*匹配任意多个字符,.匹配单个字符

关键在于*的情况,如果遇到了星号,那么需要枚举所有与星号匹配的情况,包括空串的情况

一、递归解法

 1 boolean isMRecursive(String s,String p){
 2     if(s.compareTo("")==0) return p.compareTo("")==0;
 3     if(p.charAt(0)==‘*‘){
 4         for(int i=0;i<s.length();i++){
 5             if(isM(s.substring(i),p)) return true;
 6         }
 7         return false;
 8     }else{
 9         if(p.charAt(0)==‘.‘||(p.charAt(0)==s.charAt(0))){
10             return isM(s.substring(1),p.substring(1));
11         }else{
12             return false;
13         }
14     }
15 }

二、非递归解法

boolean isMIterate(String s,String p){
    if(s.compareTo("")==0) return p.compareTo("")==0;
    int i=0,j=0;
    int start=-1;
    int ss=0;
    while(i<s.length()&&j<p.length()){
        if(i==s.length()) return j==p.length();
        if(p.charAt(j)==‘*‘){
            start=j;
            ss=i+1;
            i++;
        }else if(p.charAt(j)==‘.‘||p.charAt(j)==s.charAt(i)){
            i++;
            j++;
        }else if(start!=-1){
            i=ss;
            j=start+1;
        }else{
            return false;
        }
    }
}

 

[Leetcode] Wildcard Matching

标签:

原文地址:http://www.cnblogs.com/deepblueme/p/4728779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!