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

正则表达式匹配

https://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4?tpId=295&tqId=1375406&ru=/exam/intelligent&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Fintelligent

import java.util.*;
public class Solution {

    public boolean match (String str, String pattern) {
        // write code here
        int i = 0, j = 0;
        if(str.length() == 0 && pattern.length() == 0 )
            return true;
        if(str.length() != 0 && pattern.length() == 0)
            return false;
        if(str.length()!=0 && str.charAt(str.length()-1) != pattern.charAt(pattern.length()-1)&&( pattern.charAt(pattern.length()-1) != '.' && pattern.charAt(pattern.length()-1)!= '*'))
            return false;  
        if(str.length() == 0 && pattern.length() == 2 && pattern.charAt(1) == '*')
            return true;
        for(; i < str.length() && j < pattern.length();)
        {//匹配的话就是字符完全相等或者pattern里面有.
            if(str.charAt(i) == pattern.charAt(j) || pattern.charAt(j) == '.')
            {
                if(j < pattern.length() - 1 && pattern.charAt(j+1) == '*')
                {
                    if(j < pattern.length() -1 && i < str.length() )
                    {
                        return match(str.substring(i+1), pattern.substring(j)) || match(str.substring(i), pattern.substring(j+2)) || match(str.substring(i+1), pattern.substring(j+2));
                    }
                }else
                {
                    i++;
                    j++;
                }
            }else if(j < pattern.length() - 1 && pattern.charAt(j+1) == '*')
                    {
                    j = j + 2;
                    }else
                        return false; 
        }
        if(i == str.length() && j == pattern.length() || (j == pattern.length() - 2 && pattern.charAt(j+1) == '*') || (j == pattern.length() - 1 && pattern.charAt(j) == '*'))
            return true;
            else
            return false;
    }
}

全部评论

相关推荐

06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 10:39
一个证都没&nbsp;我能填什么
程序员小白条:别人有,你为什么没有,还是这个道理,社会就是比较,竞争,淘汰,你要安逸,那么就要做好淘汰的准备
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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