题解 | #正则表达式匹配#

正则表达式匹配

http://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4

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;
}

}

全部评论

相关推荐

10-31 13:04
南华大学 Java
嵌入式的小白:很多面试,面试前不会去打扰cto的,但一般cto不会在这些小事上刷人,只能说这个cto比较操心,啥重要不重要,紧急不紧急的,估计都会过问,平淡看待吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务