当前位置: 首页 > news >正文

吴江和城乡建设局网站深圳百度推广公司

吴江和城乡建设局网站,深圳百度推广公司,wordpress 密码忘记,电子商务公司简介怎么写10. 正则表达式匹配(困难) 题解 如果从左向右进行匹配的话,需要考虑字符后是否有 * 。 因此选择从右向左扫描更为简单。 *前面肯定有一个字符,它像是一个拷贝器,能够复制前面的单个字符,甚至也可以把这个…

10. 正则表达式匹配(困难)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 题解

    • 如果从左向右进行匹配的话,需要考虑字符后是否有 * 。

      在这里插入图片描述

    • 因此选择从右向左扫描更为简单。

      *前面肯定有一个字符,它像是一个拷贝器,能够复制前面的单个字符,甚至也可以把这个字符消除(出现 0 次)。

      两个字符串是否匹配,取决于最右边的字符是否匹配,以及剩余的子串是否匹配。其中,「剩余的子串是否匹配」,就是本道题的子问题

      在这里插入图片描述

    • 状态定义:定义 dp[i][j] 为第一个字符串到 i 为止,第二个字符串到 j 为止,两个字符串是否匹配。如果匹配,dp[i][j] = true;如果不匹配,dp[i][j] = false

    • 子问题的考虑

      • 情况一:s[i-1] 和 p[j-1] 匹配,即 s[i-1] == p[j-1] || p[j-1] == '.'。那么只需要考虑剩余的子串是否匹配,即 dp[i][j] = dp[i-1][j-1];

        在这里插入图片描述

      • 情况二:s[i-1] 和 p[j-1] 不匹配。这时候不能直接认为两个字符串不匹配,而是需要进一步考虑 p[j-1] == '*' 的情况。但是如果不是 * ,那么肯定不匹配。

        在这里插入图片描述

        对于 * ,它可以匹配 0 个或多个字符。当s[i-1] 和 p[j-2] 匹配,且 p[j-1] == ‘*’ 时,需要考虑三种情况: * 使 dp[j-2] 出现 0 次、1 次或 >=2次。只要其中一种情况能使得两个子串匹配,我们就可以继续考虑剩余子串是否匹配。状态转移方程为:dp[i][j] = dp[i][j-2] || dp[i-1][j-2] || dp[i-1][j];

        在这里插入图片描述
        当s[i-1] 和 p[j-2] 不匹配,且 p[j-1] == ‘*’ 时,可以利用 * 消除不匹配字符 p[j-2],考虑 s[i-1] 和 p[j-3] 是否匹配。状态转移方程为:dp[i][j] = dp[i][j-2];

    • 初始情况:当两个字符串都是空串的时候,一定匹配,因此 dp[0][0] = true; ;当 s 为空时,如果 p 的右端字符是 * ,那么就可以使得 p 也变成空串;当 p 为空,两个字符串一定不匹配。

  2. 代码

    class Solution {
    public:bool isMatch(string s, string p) {int m = s.size(), n = p.size();vector<vector<bool>> dp(m+1, vector<bool>(n+1, false));// 两个空字符串一定匹配dp[0][0] = true;// 如果s为空串 p[j-1]=* 也能够匹配for(int j=1; j<=n; ++j){if(p[j-1] == '*'){dp[0][j] = dp[0][j-2];}}// 从右向左匹配for(int i=1; i<=m; ++i){for(int j=1; j<=n; ++j){// s[i-1]和p[j-1]匹配if(s[i-1] == p[j-1] || p[j-1] == '.'){dp[i][j] = dp[i-1][j-1];}// s[i-1]和p[j-1]不匹配else{// p[j-1] == '*' 且 s[i-1]和p[j-2]匹配if(p[j-1] == '*'){dp[i][j] = dp[i][j-2];if(s[i-1] == p[j-2] || p[j-2] == '.'){dp[i][j] = dp[i][j-2] || dp[i-1][j-2] || dp[i-1][j];}}}}}return dp[m][n];}
    };
    
  3. 收获

    • 理解错了 * 的意思,* 类似于一个拷贝器 ,能匹配前一个元素,也能消除前一个元素(匹配零个)。
    • 这道题需要考虑多种情况,感觉很难想得这么全面。
http://www.mnyf.cn/news/45089.html

相关文章:

  • 网站维护公司推荐营销策划公司取名大全
  • 有谁用2008做网站服务器成都短视频代运营
  • 高端网站建设方案网站推广计划
  • 网站素材 下载seo推广系统排名榜
  • 微信做网站谷歌浏览器引擎入口
  • 做调查挣钱的网站武汉百度搜索优化
  • 祭祖网站怎么做十大seo公司
  • 大企业网站建设多少钱防恶意点击软件
  • 用ip地址做网站seo狂人
  • 高级web程序设计—jsp网站开发 吴 课后习题答案优秀网站设计欣赏
  • 免费建站的网站企业培训课程分类
  • 做贱奴网站百度广告推广怎么收费了
  • 服饰网站建设目的武汉seo关键词排名
  • 手机网站判断跳转代码怎么写网站推广费用
  • 衡水提供网站制作公司报价优化大师下载电脑版
  • 设计素材网站排行河北关键词seo排名
  • 网站怎么做来流量怎样在百度上发布作品
  • 如何知道一个网站是用什么做的网上推广赚钱方法
  • 西安制作网站需要多少钱有哪些可以推广的平台
  • 国外做SEO网站企业文化标语经典
  • 给人家做的网站想改怎么改百度帐号个人中心
  • 电商网站开发简历百度网讯科技有限公司官网
  • 网站建设制作 优帮云淘宝直通车
  • 蓝科企业建站模板网站建站公司
  • 网站制作排名事件营销的经典案例
  • 广州番禺哪里有学网站建设seo排名软件有用吗
  • 南宁网站制怎么自己找外贸订单
  • 天津做网站外包公司有哪些seo关键词优化方法
  • 网站管理员容易做吗深圳aso优化
  • 旅行社ota平台运营做些什么seo中文全称是什么