码迷,mamicode.com
首页 > 编程语言 > 详细

Leetcode: Wildcard Matching. java

时间:2014-06-08 03:10:46      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:leetcode   java   wildcard   string   greedy   

Implement wildcard pattern matching with support for ‘?‘ and ‘*‘.

‘?‘ Matches any single character.
‘*‘ Matches any sequence of characters (including the empty sequence).

The matching should cover the entire input string (not partial).

The function prototype should be:
bool isMatch(const char *s, const char *p)

Some examples:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "*") → true
isMatch("aa", "a*") → true
isMatch("ab", "?*") → true
isMatch("aab", "c*a*b") → false

public class Solution {
    public boolean isMatch(String s, String p) {
        if (s == null || p == null) return false;
        if (s.equals(p)) return true;
        int m = s.length();
        int n = p.length();
        int posS = 0;
        int posP = 0;
        int posStar = -1;
        int posOfS = -1;
        //if posS == posP || posP == '?', ++posS and ++posP.
        //posOfS, posStar, record the positon of '*' in s and p, ++posP and go on.
        //if not match, go back to star, ++posOfS
        while (posS < m) {
        	if (posP < n && (s.charAt(posS) == p.charAt(posP) || p.charAt(posP) == '?')) {
        		++posS;
        		++posP;
        	}
        	else if (posP < n && p.charAt(posP) == '*') {
        		posStar = posP;
        		posOfS = posS;
        		++posP;
        		continue;
        	}
        	else if (posStar != -1) {
        		posS = posOfS;
        		posP = posStar + 1;
        		++posOfS;
        	}
        	else {
        	    return false;
        	}
        }
        while (posP < n && p.charAt(posP) == '*') {
        	++posP;
        }
    
        return posS == m && posP == n;
    }
}



Leetcode: Wildcard Matching. java,布布扣,bubuko.com

Leetcode: Wildcard Matching. java

标签:leetcode   java   wildcard   string   greedy   

原文地址:http://blog.csdn.net/muscler/article/details/29198653

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