网站根目录文件,做暧在线观看网站,个人博客网站开发背景论文,兰州网络公司网站给你一个字符串 s 和一个字符规律 p#xff0c;请你来实现一个支持 . 和 * 的正则表达式匹配。
. 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配#xff0c;是要涵盖 整个 字符串 s的#xff0c;而不是部分字符串。
说明:
s 可能为空#xff0c;且只包含…给你一个字符串 s 和一个字符规律 p请你来实现一个支持 . 和 * 的正则表达式匹配。
. 匹配任意单个字符 * 匹配零个或多个前面的那一个元素 所谓匹配是要涵盖 整个 字符串 s的而不是部分字符串。
说明:
s 可能为空且只包含从 a-z 的小写字母。 p 可能为空且只包含从 a-z 的小写字母以及字符 . 和 *。 示例 1:
输入: s aa p a 输出: false 解释: a 无法匹配 aa 整个字符串。 示例 2:
输入: s aa p a* 输出: true 解释: 因为 * 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 a。因此字符串 aa 可被视为 a 重复了一次。 示例 3:
输入: s ab p .* 输出: true 解释: .* 表示可匹配零个或多个*任意字符.。 示例 4:
输入: s aab p c*a*b 输出: true 解释: 因为 * 表示零个或多个这里 c 为 0 个, a 被重复一次。因此可以匹配字符串 aab。 示例 5:
输入: s mississippi p mis*is*p*. 输出: false
dp式子情况自己想我不想写了
我贴个网址有一些题解但是我没看。
class Solution {public boolean isMatch(String s,String p){if (s null || p null)return false;int sLens.length();int pLenp.length();boolean[][] dp new boolean[sLen 1][pLen 1];dp[0][0] true;//dp[i][j] 表示 s 的前 i 个是否能被 p 的前 j 个匹配for (int i 0; i pLen; i) {dp[0][i 1] p.charAt(i) * dp[0][i - 1];}for (int i 0; i sLen; i) {for (int j 0; j pLen; j) {//单个字符可以匹配if (p.charAt(j) . || p.charAt(j) s.charAt(i)) dp[i 1][j 1] dp[i][j];//多个字符if (p.charAt(j) *) {dp[i1][j1]dp[i1][j-1] || //*代表0个(dp[i1][j] (s.charAt(i)p.charAt(j-1) || p.charAt(j-1).)) || //*代表1个(dp[i][j1] (s.charAt(i)p.charAt(j-1) || p.charAt(j-1).)); //代表多个}}}return dp[sLen][pLen];}
}