解题(StringTongPei--字符串匹配(动态规划))
2024-10-19 03:27:56
题目描述
问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)
?:匹配1个字符
输入:
通配符表达式;
一组字符串。
输出:
返回匹配的结果,正确输出true,错误输出false
输入描述:
先输入一个带有通配符的字符串,再输入一个需要匹配的字符串
输出描述:
返回匹配的结果,正确输出true,错误输出false
示例1
输入
te?t*.*
txt12.xls
输出
false
代码如下:
package com.yzh.hehe; import java.util.Scanner; public class StringTongPei { public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()) {
System.out.println(stringTongPei(scanner.nextLine(), scanner.nextLine()));
}
scanner.close();
}
//动态规划(也可用Java自带的正则解决)
private static boolean stringTongPei(String tp,String string) {
int length1=tp.length();
int length2=string.length();
boolean[][] arr=new boolean[length1+1][length2+1];
arr[0][0]=true;
for (int i = 1; i <=length1; i++) {
for (int j = 1; j <= length2; j++) {
if (tp.charAt(i-1)=='*') {
if (arr[i-1][j]==true||arr[i][j-1]==true) {
arr[i][j]=true;
}
}else if (tp.charAt(i-1)=='?') {
if (arr[i-1][j-1]==true) {
arr[i][j]=true;
}
}else {
if (arr[i-1][j-1]==true&&(tp.charAt(i-1)==string.charAt(j-1))) {
arr[i][j]=true;
}
}
}
}
return arr[length1][length2]; } }
参考:http://www.mamicode.com/info-detail-986984.html
最新文章
- Myeclipse8.6配置android_SDK,进行android开发(转载)
- sql server 行转列(转载)
- ASP.NET网站开发中的配置文件
- android学习——error opening trace file: No such file or directory (2)
- 二叉树遍历 空间复杂度为O(1)
- Daas
- 谱曲软件-MuseScore
- Http Analyzer 数据抓包
- iOS Size Class使用
- mybatis基础学习4---懒加载和缓存
- 前端自动化(三) 合并压缩css、压缩js、添加时间戳、打包上线操作
- [51nod1329]路径游戏
- pat1081-1090
- ACM算法竞赛:抄课文
- Web前端2019面试总结
- 小程序view排版
- pyglet 绝对路径资源导入以及视频播放(二)
- 再次安装fedora23的一些遗留问题的解决
- 【剑指offer】重建二叉树
- HP-UX oracle RAC 双机实践 (转载)