正则表达式

	public boolean isMatch(String s, String p) {
		boolean[] match = new boolean[s.length() + 1];
		match[s.length()] = true;
		for(int i = p.length() - 1; i >=0; i--){
			if(p.charAt(i) == '*'){
				//如果是星号,从后往前匹配
				for(int j = s.length() - 1; j >= 0; j--){
					match[j] = match[j] || (match[j + 1] && (p.charAt(i - 1) == '.'
							|| (p.charAt(i - 1) == s.charAt(j))));
				}
				//记得把i多减1,因为星号是和其前面的字符匹配使用
				i--;
				
			}else{
				//如果不是星号,从前往后匹配
				for(int j = 0; j < s.length(); j++){
					match[j] = match[j + 1] && (p.charAt(i) == '.' || (p.charAt(i) == s.charAt(j)));
				}
				//只要试过了pattern中最后一个字符,就要把match【s。length()】置为false
				match[s.length()] = false;
			}
		}
		return match[0];
	}

 

0