java匹配两个字符_·代表任意一个字符,*代表任意一串字符,判断两个字符串是否匹配?...
·代表任意一个字符,*代表任意一串字符,判断两个字符串是否匹配? 如题,·代表任意一个字符,*代表任意一串字符,判断两个字符串是否匹配?假如a字符串为:as*bnc·b,b字符串为asdfgvbbnchb,则这俩个字符串匹配。
public class MyTest{
public static void main(String[] args) {
System.out.println(isMatch("as111111dfgvbbnchb","as*bnc.b"));
}
/**
* 动态规划法判断普通字符串是否与通配符字符串匹配。
*
*
* 算法思路:
* 设s为普通字符串,p为通bai配符字符串,字符串中字符编号以0起始。
* 申请布尔型数组 dp[s.length+1][p.length+1]。
* 1. dp[0][0]表示s为空串、p为空串时是否匹配,显然为true,dp[0][0]=true。
* 2. dp[0][j+1],0=
* 当dp[0][j]=true且p[j]='*'时,dp[0][j+1]=true。
* 如果dp[0][j]=false,即p[0..j-1]已经不能与空串匹配了,显然加上p[j]
* 也不能匹配。
* 如果p[j]!='*',则p[j]必须与一个字符匹配,而s为空串,显然不能匹配。
* 3. dp[i+1][j+1]表示s[0..i]与p[0..j]是否匹配。
* 3.1 如果p[j]='*',那么可以有两种匹配方式:
* 方式1. p[j]与s[i]匹配,s[i]被匹配掉后,还需判断s[0..i-1]是否与
* p[0..j]匹配,故dp[i+1][j+1]=dp[i][j+1]。
* 方式2. p[j]不与s[i]匹配,这时还需判断s[0..i]是否与p[0..j-1]匹配,
* 故dp[i+1][j+1]=dp[i+1][j]。
* 综合两种情况,dp[i+1][j+1]=dp[i][j+1]||dp[i+1][j]。
* 3.2 如果p[j]='.',则p[j]必须和s[i]匹配,还需判断s[0..i-1]是否与
* p[0..j-1]匹配,故dp[i+1][j+1]=dp[i][j]。
* 3.3 如果p[j]为其他字符并且与s[i]相同,则p[j]必须和s[i]匹配,还需判断
* s[0..i-1]是否与p[0..j-1]匹配,故dp[i+1][j+1]=dp[i][j]。
* 这种情况可以与情况3.2合并。
* 最终 dp[s.length][p.length] 即表示s与p是否匹配。
*
*
* @param s
* 普通字符串。
* @param p
* 通配符字符串。
* @return 如果普通字符串与通配符字符串匹配则返回true,否则返回false。
*/
public static boolean isMatch(String s,String p) {
boolean[][] dp = new boolean[s.length()+1][p.length()+1];
dp[0][0]=true;
for(int j = 0;j
if(dp[0][j] && p.charAt(j) == '*') {
dp[0][j+1] = true;
}
}
for(int i = 0;i < s.length();i++) {
for(int j = 0;j < p.length();j++) {
if(p.charAt(j) == '*') {
dp[i+1][j+1] = dp[i][j+1]|| dp[i+1][j];
}else if(p.charAt(j) == '.' || p.charAt(j) == s.charAt(i)) {
dp[i+1][j+1] = dp[i][j];
}
}
}
return dp[s.length()][p.length()];
}
}
java匹配两个字符_·代表任意一个字符,*代表任意一串字符,判断两个字符串是否匹配?...相关推荐
- python 从字符串中随机选取4个字符_我需要一个Python函数,当给定字符的期望概率时,它将输出4个不同字符的随机字符串...
对于四封信,我脑海中闪过的是:from random import random def randABCD(n, pA, pB, pC, pD): # assumes pA + pB + pC + p ...
- 借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和。
定义一个函数,实现判断某个整数是否是素数.借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和.从键盘输入一个偶数,输出该偶数的两个素数之和. 代码段: #include <io ...
- python中怎么统计英文字符的个数_【Python练习1】统计一串字符中英文字母、空格、数字和其他字符的个数...
练习思路: 1.输入一串字符 2.筛选出字符中的英文字母并统计 3.筛选出字符中的空格并统计 4.筛选出字符中的数字并统计 5.筛选出字符中的其他字符并统计 代码实现: def msg(s): abc ...
- char添加一个字符_给你五十行代码把图片变成字符画!程序:太多了,一半都用不完...
今天和大家分享一个简单又好玩的Python项目–"图片转字符画".废话不多说,先上一个效果图迷惑一下众生. 没错的,图片转字符画就是将我们平常所看到的的图片根据像素RGB值和灰度值 ...
- shell文件通配符(9):任意一个:?、任意数量:*、任意包含[]、[^]:任意不包含
文章目录 一. 有哪些文件通配符 二. 匹配任意 ?:匹配任意一个字符 *:匹配任意数量的字符串 三. 匹配任意指定一个字符 1. []:匹配任意包含 匹配任意包含 字符范围 2. [!]与[^]:匹 ...
- java 正则 第一个出现的字符_如何用正则表达式通过第一个出现的字符进行拆分?...
更多追问追答 追问 只想用正则表达式,想一步到位 追答 用正则表达式比上面的方法麻烦,并且运行速度慢,你要非用正则表达式,不知下面这样的Java程序得到的结果,行不行.public class KK ...
- 如果java使用什么声明类_如果声明一个类时使用abstract修饰符,则表明该类是()_学小易找答案...
[简答题]用 find 命令查找 /tmp 目录下以 vmlinuz 开头及大小超过 1M 的文件. [单选题]可以用 ( ) 来声明游标 [单选题]( )若用如下的SQL语句创建了一个SC表:CRE ...
- java从网页抓取图片_抓取一个网站特定的全部图片(JAVA)
1. 目的 用五笔时,如果碰到不会拆的字,只好换回拼音.但这样做治标不治本,于是到网上找五笔反查工具.最后发现一个不错的网站--不仅有每个字对应的五笔码,还有其字根图.可惜的是,这是一个网站.换句说, ...
- angular过滤字符_如何使用Angular和Azure计算机视觉创建光学字符读取器
angular过滤字符 介绍 (Introduction) In this article, we will create an optical character recognition (OCR) ...
- mysql用外键链接两个表_可能做一个MySQL外键的两个可能的表之一?
你所描述的是多态关联.也就是说,"外键"列包含必须存在于一组目标表之一中的id值.通常,目标表以某种方式相关,例如一些常见的数据超类的实例.您还需要外键列旁边的另一列,以便在每行上 ...
最新文章
- 12/12 day06
- Python入门知识点总结
- cus.crm.notes.Component.extend(cus.crm.notes.ext.Component, {
- RHEL5下DNS配置详解3
- JDK 11:发行候选更新和OpenJDK JDK 11 LTS
- django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11
- 为何在wpf中textbox的值有时不会实时的变化
- 关于近期对自己的总结
- JPA学习笔记---JPA实体Bean的建立+配置文件+junit测试+自动生成(对应实体Bean的)数据库表+插入数据
- Mac Big Sur右上角时间变灰的解决方法
- C#中List〈string〉和string[]数组之间的相互转换
- [转载]树、森林和二叉树的转换
- 怎么提高Mysql执行sql导入的速度
- 2018 中国短视频开发者创意大赛震撼来袭,万元现金大奖邀你来战!
- Dart教程(三):类的定义和使用
- Powerpoint中VBA编程技巧
- 2008 r2 server sql 中文版补丁_sql2008 sp4补丁
- C++实现设计模式——Builder模式
- HTML静态网页设计
- 删除自定义reg注册表
热门文章
- C#并行编程(4):基于任务的并行
- ASP.NET Core如何在ActionFilterAttribute里做依赖注入
- .net core i上 K8S(四).netcore程序的pod管理,重启策略与健康检查
- 分析现有 WPF / Windows Forms 程序能否顺利迁移到 .NET Core 3.0
- 开源纯C#工控网关+组态软件(六)图元组件
- .NET Core快速入门教程 4、使用VS Code开发.NET Core控制台应用程序
- SaS中ne在mysql语句对应_SAS学习经验总结分享:篇四—SQL过程
- 遥感空间尺度转换技术(升尺度和降尺度)
- C#输入框InputBox问题
- Linux之软连接和硬链接