当前位置: 首页 > news >正文

牛客出bug(华为机试HJ71)

Hj71:字符串通配符

描述

问题描述:在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
要求:
实现如下2个通配符:
*:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同)
?:匹配1个字符

注意:匹配时不区分大小写。

输入:
通配符表达式;
一组字符串。

输出:

返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false

数据范围:字符串长度 1≤s≤100 

进阶:时间复杂度:O(n2) ,空间复杂度 O(n) 

输入描述:

先输入一个带有通配符的字符串,再输入一个需要匹配的字符串

输出描述:

返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false

上述为题目,都提示时间复杂度为 O(n2) 了,基本都能想到动态规划吧,废话不多说,先上代码

public static void main(String[] args) {Scanner in = new Scanner(System.in);String match = in.nextLine();String target = in.nextLine();System.out.println(dp(match, target) ? "true" : "false");}/*** pass:32/34* eg:* a*?*c* a@c* 预计:false!!!!!!!!!!!!!!!todo sotmw???????* 实际:true* @param match* @param target* @return*/public static boolean dp(String match, String target) {int m = match.length();int n = target.length();boolean[][] dp = new boolean[m][n];// 初始化dpfor (int j = 0; j < n; ++j) {char c = match.charAt(0);if (c == '*') {dp[0][j] = true;//通配符匹配多个if (m > 1) {dp[1][j] = match.charAt(1) == target.charAt(j);//第一位的 * 可能不匹配,多初始化一行}}if (j == 0 && (c == '?' || c == target.charAt(0))) {//dp[0][0] 必须初始化dp[0][j] = true;}}// 常规dpfor (int i = 0; i < m - 1; ++i) {for (int j = 0; j < n - 1; ++j) {if (dp[i][j]) {char mat = match.charAt(i + 1);if (mat == '*') {for (int j0 = j; j0 < n; ++j0) {dp[i + 1][j0] = true;}} else if (mat == '?') {dp[i + 1][j + 1] = true;} else {dp[i + 1][j + 1] = mat == target.charAt(j + 1);}}}}return dp[m - 1][n - 1];}

这个用例用眼睛都能匹配,它告诉我说不行!!!!!!!!就问有没有被坑的感觉!!!!!?

===============================分割线===========================

后来我看到了

*:匹配0个或以上的字符(注:能被*和?匹配的字符仅由英文字母和数字0到9组成,下同)

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

人为埋雷!!!!!被坑的感觉更强烈了!!!!!!!

搞些杂七杂八的消耗别人的时间精力,完全违背了练习算法的初衷,伤心了

http://www.lryc.cn/news/220076.html

相关文章:

  • 第十一章 日志管理
  • 灯串跨境外贸出口欧美CE认证和UL588报告周期解析
  • 大数据中的分布式文件系统MapReduce的选择题
  • storm安装手册及笔记
  • vue 视频流播放
  • Azure 机器学习 - 使用Python SDK训练模型
  • C#成员属性代码示例
  • 3、Dockerfile 深入与其他细节
  • 大数据之陌陌聊天数据分析案例
  • 03 贝尔曼公式
  • 学习视频剪辑:批量添加srt字幕,让视频更生动
  • Windows桌面便签工具推荐使用哪一款?
  • 【微信小程序】自定义组件(二)
  • llinux的更目录下的文件作用和举例
  • 20231106_抽象类abstract
  • yolov5 obb旋转框 tensorrt部署
  • http中的Content-Type类型
  • 【C语法学习】17 - fwrite()函数
  • CWE(Common Weakness Enumeration,通用缺陷枚举)
  • 华为政企视频会议产品集
  • IntelliJ IDEA 2022创建Maven项目
  • 有限域的Fast Multiplication和Modular Reduction算法实现
  • 第八章:security testing
  • Linux系统下一些配置建议整理
  • 【launch文件中如何启动gdb调试单个节点多个节点】
  • Unity中Shader的GI的直接光实现
  • JAVA进程和线程
  • 3.2-Docker Image概述
  • JS自定义深浅度克隆
  • MySQL之表的约束