正则表达式匹配

题目描述
请实现一个函数用来匹配包括'.'和''的正则表达式。模式中的字符'.'表示任意一个字符,而''表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配

public class Solution {
    
    public boolean match(char[] str, char[] pattern) {
        
        if(str == null || pattern == null) {
            
            return false;
        }
        if(str != null && pattern == null) {
            
            return false;
        }
        return matchCore(str, 0, pattern, 0);
    }
    private boolean matchCore(char[] str, int i, char[] pattern, int j) {
        
        if(i == str.length && j == pattern.length) {
            
            return true;
        }
        if(i < str.length && j == pattern.length) {
            
            return false;
        }
        if(j + 1 < pattern.length && pattern[j + 1] == '*') {
            
            if(i == str.length) {
                
                return matchCore(str, i, pattern, j + 2);
            }else {
                
                if(str[i] == pattern[j] || pattern[j] == '.') {
                    
                    return matchCore(str, i, pattern, j + 2) || matchCore(str, i + 1, pattern, j) ||matchCore(str, i + 1, pattern, j + 2);
                }else {
                    
                    return matchCore(str, i , pattern, j + 2);
                }
            }
        }
        if(i == str.length && j < pattern.length)
            return false;
        if(pattern[j] == str[i] || pattern[j] == '.') {
            
            return matchCore(str, i + 1, pattern, j + 1);
        }
        return false;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容