华为机试-字符串通配符
题目描述
问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。
现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(字符由英文字母和数字0-9组成,不区分大小写。下同)
?:匹配1个字符
输入:
通配符表达式;
一组字符串。
输出:
返回匹配的结果,正确输出true,错误输出false
输入描述:
先输入一个带有通配符的字符串,再输入一个需要匹配的字符串
输出描述:
返回匹配的结果,正确输出true,错误输出false
输入例子:
te?t*.*
txt12.xls
输出例子:
false
用最长公共子序列来求的,就是求通配符串和给定的串的最长公共子序列长度,最后用这个长度和通配符串去掉通配字符后 的长度做对比,如果相等则输出true,否则false
例如: te?t*.* txt12.xls 这两个串,我们会发现最长公共子序列长度为3,而te?t*.*去掉通配符后的长度为4,长度不相等,所以输出为false。下面附上代码:
- import java.util.Scanner;
- public class Main {
- public static void main(String[] args) {
- Scanner sc=new Scanner(System.in);
- while (sc.hasNext()){
- String str1=sc.next();
- String str2=sc.next();
- int[][]dp=new int[str1.length()+1][str2.length()+1];
- for(int i=1;i<str1.length()+1;i++){
- for (int j=1;j<str2.length()+1; j++){
- if(str1.charAt(i-1)==str2.charAt(j-1)){
- dp[i][j]=dp[i-1][j-1]+1;
- }else {
- dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
- }
- }
- }
- if(str1.replaceAll("[?*]","").length()==dp[str1.length()][str2.length()]){
- System.out.println(true);
- }else {
- System.out.println(false);
- }
- }
- }
- }
转载于:https://www.cnblogs.com/wwjldm/p/7095650.html
华为机试-字符串通配符相关推荐
- 华为机试-字符串子序列II
华为机试-字符串子序列II 1.思路 2.代码 1.思路 理解这个抽象题目,其实就是一个求最长子序列的题目.求最长子序列我们一般使用动态规划来做. 与以往不同的是,我们需要倒序求最长子序列,这样可以求 ...
- 华为机试--字符串ASC码+偏移量实现加密
华为机试–字符串ASC码+偏移量实现字符串加密的JS实现 题目描述:给出原文字符串str,通过对字符串的每个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量.数组 ...
- 华为机试字符串分割c语言,2014年华为上机机试c语言标题和答案
2014年华为上机机试c语言题目和答案 自己code出来的,结果是正确的,但是其中还有很多的优化之处,还请各位大神多多指导. 代码打包: http://download.csdn.net/detail ...
- 华为机试——字符串反转
题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.例如: 输入描述: 输入N个字符 输出描述: 输出该字符串反转后的字符串 示例1 输入 abcd 输出 dcba 思路:利用st ...
- 华为机试——字符串分隔
题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于1 ...
- 华为机试——字符串最后一个单词的长度
题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 ...
- 华为机试——字符串压缩(stringZip)
/* 二.题目描述(40分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1. 仅压缩连续重复 ...
- 华为机试—字符串首字母转换成大写
举例: 输入:this is a book 返回:This Is A Book #include<stdio.h> #include<stdlib.h> #include< ...
- 华为机试-字符串子序列
判断字符串子序列 给定字符串target和source,判断target是否为source的子序列.你可以认为target和source 中仅包含英文小写字母,字符串source可能会很长,长度~=5 ...
- 华为机试—字符串处理专题
文章目录 (leetbook)字符串-125.验证回文串 5. 最长回文子串 131.分割回文串(见回溯) HJ1计算字符串最后一个单词的长度,单词以空格隔开 HJ2输出输入字符串中含有该字符的个数 ...
最新文章
- [转]symbian基本类型转换
- OpenCASCADE:绘制测试线束之入门
- Loj#114-k大异或和【线性基】
- 缺失值和异常值的识别与处理_识别异常值-第一部分
- Spring Data JPA 从入门到精通~@Param用法
- flash人物原地走路,Flash制作小人走路简单动画图文教程
- java中que_java中==和eques比较
- 江苏专转本计算机各章知识点,江苏专转本计算机知识点.doc
- centos 用户和组的相关命令
- 为什么不用网页文件做办公文档
- 获取阿里云docker加速器地址
- extjs的Ext.grid.EditorGridPanel中ComboBox显示值的问题
- 跟着翁凯老师学Cday1#学习记录#
- 解决Linux内核问题实用技巧之-dev/mem的新玩法
- Mac安装boost
- Macbook Pro 外接显示器关闭內建屏幕的方法,开盖状态
- Python学习-猜数字游戏
- 面试了一位-46-岁的程序员,思绪万千,最后结局竟让我大惊失色
- 网络与信息安全身份证认证技术分析
- oracle自己主动维护