首页 > 其他分享 > #yyds干货盘点# LeetCode面试题:正则表达式匹配

#yyds干货盘点# LeetCode面试题:正则表达式匹配

时间:2023-02-10 16:01:24浏览次数:73  
标签:aa yyds 面试题 匹配 charAt int boolean LeetCode String

1.简述:

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

'.' 匹配任意单个字符

'*' 匹配零个或多个前面的那一个元素

所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

 

示例 1:

输入:s = "aa", p = "a"

输出:false

解释:"a" 无法匹配 "aa" 整个字符串。

示例 2:

输入:s = "aa", p = "a*"

输出:true

解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。

示例 3:

输入:s = "ab", p = ".*"

输出:true

解释:".*" 表示可匹配零个或多个('*')任意字符('.')。

2.代码实现:

class Solution {
public boolean isMatch(String s, String p) {
int m = s.length();
int n = p.length();

boolean[][] f = new boolean[m + 1][n + 1];
f[0][0] = true;
for (int i = 0; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (p.charAt(j - 1) == '*') {
f[i][j] = f[i][j - 2];
if (matches(s, p, i, j - 1)) {
f[i][j] = f[i][j] || f[i - 1][j];
}
} else {
if (matches(s, p, i, j)) {
f[i][j] = f[i - 1][j - 1];
}
}
}
}
return f[m][n];
}

public boolean matches(String s, String p, int i, int j) {
if (i == 0) {
return false;
}
if (p.charAt(j - 1) == '.') {
return true;
}
return s.charAt(i - 1) == p.charAt(j - 1);
}
}

标签:aa,yyds,面试题,匹配,charAt,int,boolean,LeetCode,String
From: https://blog.51cto.com/u_15488507/6049566

相关文章

  • #yyds干货盘点# LeetCode程序员面试金典:八皇后
    题目:设计一种算法,打印N皇后在N×N棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对......
  • 测开-面试题-MySQL
    1 增删改查的关键字分别是什么? 2 内连接和外连接的区别? 3 MySQL里面锁是怎么使用的? 4 Mysql隔离级别? 5MVCC机制实现原理? 6 通过mysql做过哪些工作? ......
  • 测开-面试题-Java基础
    1 垃圾回收机制? 2SpringBoot的好处? 3 Java中的map有没有了解? 4 webservice接口有用过吗?答:有。在学校做过一个项目——和风天气,做客户端开发的时候,使用webse......
  • 测开-面试题-OS、Linux、算法、其他
    1OS1.1 进程和线程区别? 1.2 进程间通信方式? 1.3 说一下socket长连接的概念? 1.4 同步和异步的区别? 1.5 了解IO操作吗?   2Linux2.1如何查看进程......
  • LeetCode 19 -- Remove Nth Node From End of List
    ProblemGiventheheadofalinkedlist,removethe\(n\)-thnodefromtheendofthelistandreturnitshead.Example1Input:head=[1,2,3,4,5],n=2Outp......
  • 面试题整理
    1、k8s中的域名是如何解析的2、pod的创建过程3、pod的终止过程4、pod一致处于pending状态一般有哪些情况,怎么排查?5、pod的钩子函数有哪几种,作用是什么?6、pod的初始化......
  • LeetCode 559. Maximum Depth of N-ary Tree
    原题链接在这里:https://leetcode.com/problems/maximum-depth-of-n-ary-tree/description/题目:Givenan-arytree,finditsmaximumdepth.Themaximumdepthisthe......
  • LeetCode接雨水(/dp 单调栈 双指针)
    原题解题目给定n个非负整数表示每个宽度为1的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。约束题解解法一classSolution{public:inttra......
  • 代码随想录算法训练营第二十天|LeetCode 654.最大二叉树、LeetCode 617.合并二叉树、L
    654.最大二叉树文章:代码随想录(programmercarl.com)视频:又是构造二叉树,又有很多坑!|LeetCode:654.最大二叉树_哔哩哔哩_bilibili思路:最大二叉树的构建过程如下:构造......
  • 代码随想录算法训练营第二十一天|LeetCode 530.二叉搜索树的最小绝对差、LeetCode 501
    530.二叉搜索树的最小绝对差文章:代码随想录(programmercarl.com)视频:二叉搜索树中,需要掌握如何双指针遍历!|LeetCode:530.二叉搜索树的最小绝对差_哔哩哔哩_bilibili思......