华为机试:快速人名查找

1121 篇文章 78 订阅
订阅专栏

题目描述

  • 华为机试:快速人名查找

题目来源

在这里插入图片描述
在这里插入图片描述

题目解析

思路:

  • 先将输入按照,风格得到一个字符串数组
  • 然后遍历这个数组,针对每一个人的名字:
    • 按照,切割,然后从左到右模型尝试匹配
    • 什么时候停止呢?
      • 当names匹配完成 || exp匹配完成了
        • 只有names和exp都全部匹配完成了,才满足要求
    • 对于names中的每一个name:
      • 第一个字母必须能用到
      • 然后每一个name可能会消耗多个exp的字符
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <functional>
#include <sstream>
#include <iostream>
#include <algorithm>
using namespace std;



// 1. 先对字符串进行切割
std::vector<std::string> strSplit(std::string str, char ch){
    std::vector<std::string> ans;
    int pos = 0;
    while ((pos = str.find(ch, 0)) != -1){
        ans.push_back(str.substr(0, pos));
        str = str.substr(pos + 1);
    }
    if(!str.empty()){
        ans.push_back(str);
    }
    return ans;
}

// 一定要用到每个单词
// 前i个字符去匹配exp的前j个字符
bool dfs(std::vector<std::string> &person, int pi, std::string exp, int ej){
    // 有任意一方已经使用完了
   if(pi == person.size() || ej == exp.size()){
       return (pi == person.size() && ej == exp.size()); // 只有两方同时使用完了,才是ok的
   }

    // 不需要完全匹配掉

   // 开始匹配,对于当前person[pi]
    // 其首字母一定要匹配,否则这个字符就不能用
    // 对于当前person[i],它可以取用person[0...]去匹配exp[ej]
    // zhang seng
    // zhas
    std::string name = person[pi];

    // 首字母不匹配
    if(name[0] != exp[ej]){
        return false;
    }

    // name和exp开始匹配
    // name消耗多个exp
    int cnt = 1;
    while (cnt < name.size() && ej + cnt < exp.size() && name[cnt] == exp[ej + cnt]){
        if(dfs(person, pi + 1, exp, ej + cnt + 1)){
            return true;
        }
        cnt++;
    }

    // 首字母匹配,那么直接进行下一个匹配
    return dfs(person, pi + 1, exp, ej  + 1 );
}



int main(){
    std::string input, exp, ans;
    getline(std::cin, input);
    std::cin >> exp;
    auto names = strSplit(input, ',');
    for (const auto & name : names) {
        auto person = strSplit(name, ' ');
        if(dfs(person, 0, exp, 0)){
            ans = ans.empty() ? name : ans + "," + name;
        }
    }

    std::cout << ans << "\n";
}
华为od机考真题-快速人名查找
VAN
10-21 295
华为od机考题目
华为机试真题详解】快速人名查找【2022 Q2 | 200分】
07-14 1565
华为机试真题详解 Python实现》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!本文解法非最优解(即非性能最优)。给一个字符串,表示用’, '分开的人名。然后给定一个字符串,进行快速人名查找,符合要求的输出。快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词输入描述: 第一行是人名,用’, '分开的人名 第二行是 查找字符串输出描述: 输出满足要求的人名输入: zhang sa
【免费题库】华为OD机试 - 快速人名查找(Java & JS & Python & C & C++).html
04-19
【免费题库】华为OD机试 - 快速人名查找(Java & JS & Python & C & C++).html
华为OD机试真题 Python语言】267、快速人名查找 | 机试真题+思路参考+代码分析
KJ.JK,正在火热更新全网最新最全的华为OD题库
08-25 1858
给一个字符串,表示用','分开的人名 >  然后给定一个字符串,进行快速人名查找,符合要求的输出   快速人名查找要求:人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词
华为OD机试 - 快速人名查找(Java)
qq_34143141的博客
07-14 130
上面例子都是两个part的人名,本题并没有说人名由几个part组成,因此我们无法确定要几重for循环解题,此时只能依赖于回溯递归来帮助我们。前缀缩写定义为 String abbr = "zhas",用一个start指针指向abbr的被检查的字母,初始时start=0,即指向abbr的第0个字母。通过上面图示,我们可以发现,parts[0]每匹配到一个abbr字母,就把下一次的匹配权让给了parts[1],这是为什么呢?此时,我们就需要进行abbr的扫描指针回溯,然后将匹配权交到parts[1]手上。
华为OD机试真题 Java语言】267、快速人名查找 | 机试真题+思路参考+代码分析
KJ.JK,正在火热更新全网最新最全的华为OD题库
09-22 813
>给一个字符串,表示用','分开的人名 >  然后给定一个字符串,进行快速人名查找,符合要求的输出   快速人名查找要求:人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词
华为OD考试真题】快速人名查找【Python版】
weixin_45201459的博客
07-26 912
技术分享,传授经验,生命不息,学习不止!
华为od统一考试B卷【快速人名查找】C++ 实现
MISAYAONE的博客
10-14 483
给一个字符串,表示用’, \’分开的人名。然后给定一个字符串,进行快速人名查找,符合要求的输出。快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词。输入描述:第一行是人名,用’, \’分开的人名第二行是 查找字符串输出描述:输出满足要求的人名
揭秘华为OD机试:如何用Python秒杀面试官的算法题!
05-14
别担心,这篇文章为你带来了华为OD机试的真题全解析。通过具体的编程题目,文章不仅提供了解题思路,还详细讲解了如何一步步实现代码。 无论是链表问题还是数组问题,这里都有详尽的介绍。让你在面试前做好万全准备...
华为机试真题 2022最新
04-22
收集整理华为机试108题,目录清晰,内涵C、C++答案 适合初中级练手学习,短时突击
华为OD机试D卷 - 快速人名查找 - 免费看解析和代码.md
05-16
私信博主获取三天体验卡,免费看所有华为OD真题、考试报告、手撕代码、面试记录
华为OD机试D卷 - 快速人名查找 - 免费看解析和代码.html
05-10
私信博主免费获取真题解析以及代码
2023华为OD机试 (B卷)|200分 快速人名查找(C++ Java JavaScript Python)
BYZLZ119的博客
06-06 180
2023华为OD机试 (B卷)|200分 快速人名查找(C++ Java JavaScript Python)-> 给一个字符串,表示用","分开的人名。然后给定一个字符串,进行快速人名查找,符合要求的输出。快速人名查找要求:人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词。第一行是人名,用“,”分开的人名 第二行是查找字符串。
深入理解SpringMVC工作原理,像大牛一样手写SpringMVC框架
m0_73311735的博客
09-06 313
SpringMVC是Spring家族中的元老之一,它是一个基于MVC三层架构模式的Web应用框架,它的出现也一统了JavaWEB应用开发的项目结构,从而避免将所有业务代码都糅合在同一个包下的复杂情况。在该框架中通过把M/Model模型:由等JavaBean构成,主要负责业务逻辑处理。V/View视图:负责向用户进行界面的展示,由等组成。控制器:主要负责接收请求、调用业务服务、根据结果派发页面。SpringMVC贯彻落实了MVC思想,以分层工作的模式,把整个较为复杂的web。
华为OD统一考试B卷 | 100分】 快速人名查找(C++ Java JavaScript Python)
算法大师,励志更新全网最全的算法题库!
03-28 3678
快速人名查找要求︰人名的每个单词的连续前几位能组成给定字符串,一定要用到每个单词。然后给定一个字符串,进行快速人名查找,符合要求的输出。给一个字符串,表示用’,’分开的人名。第一行是人名,用’,’分开的人名
华为、华三、思科、锐捷交换机路由器设备命令行常见错误信息
小木的博客
05-28 409
使用CLI命令行界面,如果输入错误,系统将会向用户报告错误信息。 知己知彼,方能百战不殆。下面是小木为大家收集整理的几大厂商常见的命令行错误提示。
华为 2024 届实习校园招聘-硬件通⽤/单板开发——第五套
wang201938的博客
06-01 255
华为 2024 届实习校园招聘-硬件通⽤/单板开发——第五套
鸿蒙OS初识
小张微说的博客
06-01 433
学习官网:https://www.harmonyos.com/cn/develop 准备 注册,安装软件(node:12+, DevEco Studio): https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415#ZH-CN_TOPIC_0000001057685607__section1453284218345 认证可以在开发的时候会提醒你去认证。 开发 既然
tensorflow-2.9.2-cp39-cp39-win-amd64.whl
最新发布
06-01
python爬虫案例
华为od机试快速人名查找
08-05
华为od机试快速人名查找是指在华为OD系统中,能够快速查找到特定人名的功能。 在现实生活中,我们经常需要查找某个人的信息,比如电话号码、邮箱地址等。而在庞大的华为OD系统中,有成千上万的员工和合作伙伴,...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

分类专栏

  • C++ 1059篇
  • python 87篇
  • ROS 84篇
  • Unix/Linux编程 221篇
  • 计算机理论与基础 310篇
  • 算法与数据结构 1121篇
  • 待替换 11篇
  • 网络 55篇
  • 数据库 289篇
  • golang 206篇
  • rust 19篇
  • wireshark 14篇
  • linux与shell脚本编程 42篇
  • 工具软件 193篇
  • 前端 6篇
  • UML 7篇
  • IDEA 15篇
  • 面试 1篇
  • 编程与人生 7篇
  • 编程语言 5篇
  • java 72篇
  • ------ SpringSecurity 5篇
  • ----- java练习 19篇
  • ----- MyBatis 9篇
  • ----- SpringBoot 23篇
  • ----- SpringMVC 11篇
  • ----- Spring 9篇
  • ----- JDBC 2篇
  • ----- Maven 14篇
  • ----- JPA 12篇
  • ----- JavaWeb 13篇
  • ----- ActiveMQ 3篇

最新评论

  • centos7:dnf(不知道装的是什么版本,dnf会段错误,不学了,反正有yum)

    Shaddock_peel: 确实是装错了,可以换下源,再重新安装过 yum clean all yum makecache yum install dnf 且重新下载dnf后你会发现新安装的dnf会比原来多很多东西,

  • 大华摄像头三维定位

    2301_80030200: 你好,请教一下怎么获取ptz的,我一直没获取到,不知道方法,求教

  • 大华摄像头三维定位

    2301_80030200: 你好,请教一下怎么获取ptz的,我一直没获取到,不知道方法,求教

  • Unix/Linux编程:信号“未决”和“阻塞”&信号集

    我代码抄都抄不明白: 用心的文章

  • C/C++编程:openssl使用(win10+qt + qmake)

    七七想喝花茶: 解决了,因为下载的openssl是64位的所以在编译时要选择64而不是32

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • C/C++:gcc选项-fno-access-control的使用
  • C++:进制转换
  • C/C++:absl:status
2023年120篇
2022年937篇
2021年1335篇
2020年883篇
2019年434篇
2018年304篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源广州市邮编中水十五局亲戚建群起什么群名好根据中文名起英文名字是什么济南车管所2021牛年刘姓男宝宝起名未名湖畔的爱与罚工资贷款情牵一线征婚交友中心palipali报关起名工业风饭店起名怡品客你值得拥有中外合资公司起名三年级仿写这儿真美女宝贝取名起名大全免费爱的厘米电视剧免费观看奴隶区:我和我的23个奴隶nylonfootjob孩子起小名叫什么好听给新生儿起名字一碗阳春面小孩起名生辰八字查询免费课题开题报告范文如何给汽贸公司起名男生起名字好听的字守护猫娘绯鞠两次世界大战女孩子起名缺水木淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化