字符串匹配

  • 这题好难
public boolean match(char[] str, char[] pattern)
    {
        if(str==null||pattern==null)
        {
            return false;
        }
        return matchcore(str,0,pattern,0);
    }

    public boolean matchcore(char[] str,int s,char[] pattern,int p)
    {
        if(s>=str.length&&p>=pattern.length)
        {
            return true;
        }
        if(s<str.length&&p>=pattern.length)
        {
            return false;
        }
        
        if(p+1<=pattern.length-1&&pattern[p+1]=='*')
        {
            //s<str.length避免无限递归
            if(s<str.length&&(pattern[p]=='.'||pattern[p]==str[s]))
            {
                //这里不匹配是因为str可能为空串
                return matchcore(str, s+1, pattern, p)||matchcore(str, s+1, pattern, p+2)||matchcore(str,s,pattern,p+2);
            }
            else{
                return matchcore(str,s, pattern,p+2);
            }
        }
       if(s<str.length&&(pattern[p]=='.'||pattern[p]==str[s]))
       {
           return matchcore(str,s+1,pattern,p+1);
       }
       return false;
        
    }
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容