package Chapter8;
/*
* '.', 任意字符
* '*', 任意次数
*/
public class _53_regular_expressions_matching {
public static void main(String[] args) {
// char []pattern = {'a', '.', 'a'};
// char []pattern = {'a', 'b', '*', 'a', 'c', '*', 'a'};
// char []pattern = {'a', 'a', '.', 'a'};
char []pattern = {'a', 'a', '.', 'a'};
char []ch = {'a', 'b', '*', 'a'};
if (new _53_function().match(pattern, 0, ch, 0)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
}
class _53_function {
boolean match(char []pattern, int pindex, char []ch, int cindex) {
if (cindex == ch.length && pindex == pattern.length) return true;
if (pindex != pattern.length && cindex != ch.length) {
if (pattern[pindex] == ch[cindex] || pattern[pindex] == '.') {
return match(pattern, pindex + 1, ch, cindex + 1);
} else if (pattern[pindex] == '*') {
if (pattern[pindex - 1] == ch[cindex] || pattern[pindex] == '.') {
return match(pattern, pindex, ch, cindex + 1);
} else {
return match(pattern, pindex + 1, ch, cindex);
}
} else if (pattern[pindex + 1] == '*'){
return match(pattern, pindex + 1, ch, cindex);
} else {
return false;
}
} else {
return false;
}
}
}
剑指offer - 面试题53:正则表达式匹配
最新推荐文章于 2023-12-27 00:15:00 发布