题目描述
问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。
现要求各位实现字符串通配符的算法。
要求:
实现如下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。下面附上代码:

 
  1. import java.util.Scanner;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner sc=new Scanner(System.in);
  5. while (sc.hasNext()){
  6. String str1=sc.next();
  7. String str2=sc.next();
  8. int[][]dp=new int[str1.length()+1][str2.length()+1];
  9. for(int i=1;i<str1.length()+1;i++){
  10. for (int j=1;j<str2.length()+1; j++){
  11. if(str1.charAt(i-1)==str2.charAt(j-1)){
  12. dp[i][j]=dp[i-1][j-1]+1;
  13. }else {
  14. dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1]);
  15. }
  16. }
  17. }
  18. if(str1.replaceAll("[?*]","").length()==dp[str1.length()][str2.length()]){
  19. System.out.println(true);
  20. }else {
  21. System.out.println(false);
  22. }
  23. }
  24. }
  25. }

转载于:https://www.cnblogs.com/wwjldm/p/7095650.html

华为机试-字符串通配符相关推荐

  1. 华为机试-字符串子序列II

    华为机试-字符串子序列II 1.思路 2.代码 1.思路 理解这个抽象题目,其实就是一个求最长子序列的题目.求最长子序列我们一般使用动态规划来做. 与以往不同的是,我们需要倒序求最长子序列,这样可以求 ...

  2. 华为机试--字符串ASC码+偏移量实现加密

    华为机试–字符串ASC码+偏移量实现字符串加密的JS实现 题目描述:给出原文字符串str,通过对字符串的每个字母进行改变来实现加密,加密方式是在每一个字母str[i]偏移特定数组元素a[i]的量.数组 ...

  3. 华为机试字符串分割c语言,2014年华为上机机试c语言标题和答案

    2014年华为上机机试c语言题目和答案 自己code出来的,结果是正确的,但是其中还有很多的优化之处,还请各位大神多多指导. 代码打包: http://download.csdn.net/detail ...

  4. 华为机试——字符串反转

    题目描述 写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串.例如: 输入描述: 输入N个字符 输出描述: 输出该字符串反转后的字符串 示例1 输入 abcd 输出 dcba 思路:利用st ...

  5. 华为机试——字符串分隔

    题目描述 •连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组: •长度不是8整数倍的字符串请在后面补数字0,空字符串不处理. 输入描述: 连续输入字符串(输入2次,每个字符串长度小于1 ...

  6. 华为机试——字符串最后一个单词的长度

    题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 ...

  7. 华为机试——字符串压缩(stringZip)

    /* 二.题目描述(40分): 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串. 压缩规则: 1. 仅压缩连续重复 ...

  8. 华为机试—字符串首字母转换成大写

    举例: 输入:this is a book 返回:This Is A Book #include<stdio.h> #include<stdlib.h> #include< ...

  9. 华为机试-字符串子序列

    判断字符串子序列 给定字符串target和source,判断target是否为source的子序列.你可以认为target和source 中仅包含英文小写字母,字符串source可能会很长,长度~=5 ...

  10. 华为机试—字符串处理专题

    文章目录 (leetbook)字符串-125.验证回文串 5. 最长回文子串 131.分割回文串(见回溯) HJ1计算字符串最后一个单词的长度,单词以空格隔开 HJ2输出输入字符串中含有该字符的个数 ...

最新文章

  1. [转]symbian基本类型转换
  2. OpenCASCADE:绘制测试线束之入门
  3. Loj#114-k大异或和【线性基】
  4. 缺失值和异常值的识别与处理_识别异常值-第一部分
  5. Spring Data JPA 从入门到精通~@Param用法
  6. flash人物原地走路,Flash制作小人走路简单动画图文教程
  7. java中que_java中==和eques比较
  8. 江苏专转本计算机各章知识点,江苏专转本计算机知识点.doc
  9. centos 用户和组的相关命令
  10. 为什么不用网页文件做办公文档
  11. 获取阿里云docker加速器地址
  12. extjs的Ext.grid.EditorGridPanel中ComboBox显示值的问题
  13. 跟着翁凯老师学Cday1#学习记录#
  14. 解决Linux内核问题实用技巧之-dev/mem的新玩法
  15. Mac安装boost
  16. Macbook Pro 外接显示器关闭內建屏幕的方法,开盖状态
  17. Python学习-猜数字游戏
  18. 面试了一位-46-岁的程序员,思绪万千,最后结局竟让我大惊失色
  19. 网络与信息安全身份证认证技术分析
  20. oracle自己主动维护

热门文章

  1. zabbix详解(十三)——zabbix微信报警实战
  2. linux挂载与卸载图文解析
  3. NYOJ-111分数加减法
  4. 你知道怎么解决DB读写分离,导致数据不一致问题吗?
  5. PHP扩展部署之最佳实践
  6. C#设计模式之简单工厂模式
  7. ALSA driver --PCM 实例创建过程
  8. HBase中MVCC的实现机制及应用情况
  9. Http Core学习(Http Components 翻译和学习)
  10. history指令显示日期时间