Leetcode 10 Regular Expression Matching & Leetcode 44 Wildcard Matching

这两道都是类似正则表达式匹配的问题,放在一起mark一下

Problem 10 Regular Expression Matching

参考 https://blog.csdn.net/hk2291976/article/details/51165010

这道正则表达式匹配的问题,直接查的博客,看到一篇思路比较好的,包括回溯和动态规划两种方法

补充:自己根据其思路写代码的时候发现了其中一些小错误,如果不对边界进行仔细检查的话会出现字符串越界的情况。

以下是我自己写的代码:

class Solution {
    public boolean isMatch(String s, String p) {
        
        int len1=s.length();
        int len2=p.length();
        boolean result=comp(s,len1-1,p,len2-1);
        
        return result;
    }
    
    public boolean comp (String s, int i, String p, int j)
    {
        while (i<0 && j>=0 && p.charAt(j)=='*') j=j-2;
        if (i<0 && j<0) return true;
        if (i>=0 && j<0) return false;
        
        if(i>=0)
       {   
         if(s.charAt(i)==p.charAt(j) || p.charAt(j)=='.')   return comp(s,i-1,p,j-1);
         else if (p.charAt(j)=='*')
         {
             if ((p.charAt(j-1)==s.charAt(i) || p.charAt(j-1)=='.')&& comp(s,i-1,p,j)) return true;
             else return comp(s,i,p,j-2);
         }
           else return false;
       }
       
        return false;
    }
}

 

Problem 44 这道比上一道的难度更大一些,主要采用回溯的方法,在p串遇到*的时候,记录s和p串当前的位置,并一步一步向前比较,否则从之前的记录点回溯,我认为这里的回溯是指回到之前的记录点并让*所表示的字符增加一位,然后继续一步一步比较

觉得这篇文章说的不错:https://blog.csdn.net/feliciafay/article/details/42392677

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值