import java.util.*;

//之前想着用动态规划解,但是两天也没搞出来,后来想还是用递归吧 public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param str string字符串 * @param pattern string字符串 * @return bool布尔型 / public boolean match (String str, String pattern) { if(str.length()==0 && pattern.length()==0) return true; if(str.length()==0) { if(pattern.length()==2 && pattern.charAt(1)=='') return true;//.*的情况 return false; } if(pattern.length()==0) return false; char[] cs1 = str.toCharArray(); char[] cs2 = pattern.toCharArray();

    if(cs2.length>1 && cs2[1] == '*') {//有*的情况
        if(cs1[0]==cs2[0] || cs2[0]=='.') {
    		boolean flag;
    		flag = match(get_str(cs1,1),pattern);//不截取*的情况
    		if(!flag) flag = match(str,get_str(cs2,2));//截取*的情况
    		
    		return flag;
    	}
    	if(cs1[0] != cs2[0]) return match(str,get_str(cs2,2));//不相等直接截取掉*
    }
    if(cs1[0]==cs2[0] || cs2[0]=='.') {
    	return match(get_str(cs1,1),get_str(cs2,1));//如果是.或者相等可以直接截取
    }
	if(cs1[0] != cs2[0]) return false;
    
	return false;
}

public String get_str(char[] arr,int n) {
	String s = "";
	for(int i = n;i < arr.length;i++) {
		s += arr[i];
	}
	
	return s;
}

}