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

华为机试 - 字符串匹配

目录

题目描述

输入描述

输出描述

用例

题目解析

算法源码


题目描述

给你一个字符串数组(每个字符串均由小写字母组成)和一个字符规律(由小写字母和.和*组成),识别数组中哪些字符串可以匹配到字符规律上。

‘.’ 匹配任意单个字符,’*’ 匹配零个或多个前面的那一个元素,所谓匹配,是要涵盖整个字符串的,而不是部分字符串。

输入描述

第一行为空格分割的多个字符串,1<单个字符串长度<100,0,1<字符串个数<100

第二行为字符规律,1<字符串个数<100

第二行为字符规律,1<=字符规律长度<=50

不需要考虑异常场景。

输出描述

匹配的字符串在数组中的下标(从0开始),多个匹配时下标升序并用,分割,若均不匹配输出-1

用例

输入ab aab
.*
输出0,1
说明
输入ab abc bsd
.*
输出0,1,2
说明
输入avd adb sss as
adb
输出1
说明

 

题目解析

会正则表达式的人机试遇到这题会流泪,不会正则表达式的人遇到这题也会流泪。

不同的是,一个是开心的泪,一个是苦涩的泪。

机试,追求最短时间,最高准确率,当然后面面试的时候,问道这题还是需要回答出动态规划解法的思路。

本题算是10. 正则表达式匹配 - 力扣(LeetCode)

变种题。关于动态规划的解法,大家可以去LeetCode上看看。

算法源码

/* JavaScript Node ACM模式 控制台输入获取 */
const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

const lines = [];
rl.on("line", (line) => {
  lines.push(line);

  if (lines.length === 2) {
    const arr = lines[0].split(" ");
    const reg = lines[1];

    console.log(getResutlt(arr, reg));
    lines.length = 0;
  }
});

function getResutlt(arr, reg) {
  const regExp = new RegExp(`^${reg}$`);

  const ans = [];
  for (let i = 0; i < arr.length; i++) {
    if (regExp.test(arr[i])) ans.push(i);
  }

  return ans.join();
}

相关文章:

  • 简明 Python 教程(第14章 Python的多线程)
  • ASP.NET MVC企业级程序设计 (商品管理:小计,总计,删除,排序)
  • Linux下GPU虚拟化
  • 聚观早报 | 华为Pura70系列先锋计划;月之暗面升级Kimi
  • Docker中Kafka容器创建/更新Topic支持多分区
  • 「GO基础」在Windows上安装Go编译器并配置Golang开发环境
  • 计算机网络期末复习笔记
  • 车牌检测(分割+识别)
  • Day03:Web架构OSS存储负载均衡CDN加速反向代理WAF防护
  • 【Python如何求出100以内的所有质数】
  • Transformer视频理解学习的笔记
  • jmeter 命令行启动 动态参数化
  • 关于spark配置项 和 hive serDe 和 spark serDe
  • Linux | 二级页表的虚拟地址是怎么转换的?
  • .m3u8.sqlite文件转mp4,m3u8.sqlite文件转视频工具(开源免费)
  • 计算机毕业设计Java电商项目(源码+系统+mysql数据库+lw文档)
  • webpack使用入门贴
  • 【Linux内核】Linux内核介绍
  • linux关于ssh免密登录、known_hosts文件
  • mongoDB操作文档(全部)
  • 基于SSM的服装商城销售系统(含文档资料)
  • 【力扣·每日一题】1774. 最接近目标价格的甜点成本 (dfs搜索 动态规划 Go)
  • Activiti7工作流(二)
  • [附源码]计算机毕业设计大学生心理测评系统
  • 【spring——命名空间与自动装配】P命名、C命名、Util命名、基于名字自动装配、基于类型自动装配、外部properties文件引入
  • 数据结构—List集合
  • 博图Modbus组态及参数设定源码
  • DockerCompose安装、使用 及 微服务部署实操
  • 非零基础自学Golang 2 开发环境 2.4 Git 安装
  • 06 估计量的评优准则
  • [附源码]计算机毕业设计校刊投稿系统Springboot程序
  • 【Kotlin 协程】协程异常处理 ② ( SupervisorJob 协程 | supervisorScope 协程作用域构建器函数 )