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

正则表达式匹配

https://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4

动态规划,详细注释在代码中了

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param str string字符串 
     * @param pattern string字符串 
     * @return bool布尔型
     */
    bool match(string str, string pattern) {
        //dp[i][j] 表示str前i个字符和pattern前j个字符的匹配情况
        int n=str.size();
        int m=pattern.size();
        vector> dp(n+1,vector(m+1,false));

        //方便起见,将第一个字符设定为相同
        str=' '+str;
        pattern=' '+pattern;
        dp[0][0]=true;

        for(int i=0;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                //遇到单独的* ,需要根据* 前面的一个字母进行判断
                if(j+1<=m&&pattern[j+1]=='*')
                {
                    continue;;
                }

                if(i!=0&&pattern[j]!='*')
                {
                    //单个字母匹配的情况
                    //取决于上个状态匹配 并且 当前字母匹配(包含字母相等或. 的情况)
                    dp[i][j]=dp[i-1][j-1]&&(str[i]==pattern[j]||pattern[j]=='.');
                }
                else if(pattern[j]=='*')    //不能为else,否则i=0的情况没有涉及到
                {
                    //多个字母匹配的情况
                    //取决于p的前j-2都是匹配的(也可以表示*前面的字符一次都不出现),或者s的前i-1与p的前j是匹配的(*前面的字符只出现一次),并且s的当前的和p的j-1也是匹配的
                    dp[i][j]=dp[i][j-2] || i>0&& (dp[i-1][j]&&(str[i]==pattern[j-1]||pattern[j-1]=='.')); 
                }
            }
        }

        return dp[n][m];

    }
};

时间复杂度分析: 表示 s 的长度, 表示 p 的长度,总共 个状态,状态转移复杂度 ,所以总时间复杂度是

#剑指offer#
全部评论

相关推荐

“校招”、“3-5年经验”
飞花断音:小公司招逆向的不要去,基本上都是搞黑灰产违法的东西
点赞 评论 收藏
分享
xdm怎么说&nbsp;要被拷打了&nbsp;担心是KPI
丹田:面就完了,就当日薪四位数的大佬免费给给你面试。
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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