[LeetCode] 写一个正则表达式匹配
题目:Regular Expression Matching
分析:题目要求挺简单的,字符匹配,对 首先,抛开 public class Solution { public boolean isMatch(String s,String p) { int slen = s.length(); int plen = p.length(); if (slen == 0 && plen == 0) return true; char c0 = getChar(s,0); char p0 = getChar(p,0); if (match(c0,p0)) { return isMatch(s.substring(1),p.substring(1)); } return false; } //判断两个字符是否相等 private boolean match(char a,char b) { return a == b; } //为什么要这个函数呢,主要是为了统一处理下标越界的问题 //如果越界了,直接返回0即可 private char getChar(String s,int p) { if (s.length() > p) { return s.charAt(p); } return 0; } } 根据题意, //判断两个字符是否相等 private boolean match(char a,char b) { return a == b || b == '.'; } 由于
最终代码: public class Solution { public boolean isMatch(String s,0),p1 = getChar(p,1); if (match(c0,p0) || p1 == '*') { if (p1 != '*') { if (slen == 0) return false; return isMatch(s.substring(1),p.substring(1)); } // if p1 is *,* means 0 ~ n int i = 0; boolean ret = isMatch(s.substring(0),p.substring(2)); // try 0 if (ret) return ret; while (i < slen && match(getChar(s,i),p0)) { ret = isMatch(s.substring(i+1),p.substring(2)); // try for every available position if (ret) return ret; i++; } } return false; } private boolean match(char a,char b) { return a == b || b == '.'; } private char getChar(String s,int p) { if (s.length() > p) { return s.charAt(p); } return 0; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |