当前位置: 首页 > 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();
}

相关文章:

  • 用户态协议栈04-定时arp-table的实现
  • 【Python】神经网络回归预测模型,Python代码实现
  • 36 - shell之sed
  • CentOS Linux 7系统中离线安装MySQL5.7步骤
  • Vim基础操作:常用命令、安装插件、在VS Code中使用Vim及解决Vim编辑键盘错乱
  • 在Apache Flink中,TableAggregateFunction是一种用户自定义的聚合函数,它允许你实现自定义的聚合逻辑
  • Java项目开发如何设计整体架构,字节跳动服务端研发面试
  • 【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
  • 同源不同页面之间的通信,SharedWorker使用
  • vue使用gitshot生成gif
  • Spring Boot基础面试问题(一)
  • 贪心算法
  • 关于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 协程作用域构建器函数 )