面试题 17.07. 婴儿名字

2024-06-16 18:20
文章标签 面试题 名字 婴儿 17.07

本文主要是介绍面试题 17.07. 婴儿名字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

链接:. - 力扣(LeetCode)

题解:

class Solution {
public:vector<string> trulyMostPopular(vector<string>& names, vector<string>& synonyms) {UnionFind uf;for (auto& syn : synonyms) {//cout << "syn:" << syn << endl;auto syn_name = split_name(syn);uf.add(syn_name.first);uf.add(syn_name.second);// 将这两个节点放入一个groupuf.merge(syn_name.first, syn_name.second);}//std::unordered_map<std::string, std::set<People>> fathers;std::unordered_map<std::string, int> fathers_count;// 遍历所有名字for (auto& name : names) {People people;split(name, people);std::string father = uf.get_father(people.name);// 获得父亲,并且按照字典序列进行排序fathers[father].insert(people);//cout << "nnnnn: " << people.name << endl;// 统计按照group父亲节点,总数量fathers_count[father] += people.count;}std::vector<std::string> result;for (auto& father : fathers) {// 获得字典序的第一个名字std::string str = father.second.begin()->name;//cout << "str:" << str << endl;// 获得总数量str = str + "(" + to_string(fathers_count[father.first]) + ")";// 追加结果result.push_back(str);}return result;}
private:
struct People {People() {count = 0;}std::string name;int count = 0;// 按照字典序列进行排序bool operator < (const People& people) const {return name < people.name;}
};void split(string& str, People& people) {auto it = str.find("(");people.name = str.substr(0, it);people.count = atoi(str.substr(it+1, str.size() - it -1).c_str());//cout << "name: " << people.name << " count:" << people.count << endl;}std::pair<std::string, std::string> split_name(string& str) {auto it = str.find(",");std::pair<std::string, std::string> result;result.first = str.substr(1, it-1);result.second = str.substr(it+1, str.size() - it -1);result.second.pop_back();//cout << "first: " << result.first << " second:" << result.second << endl;return result;}
class UnionFind {
public: void add(std::string& p) {auto ite = _father.find(p);if (ite == _father.end()) {_father[p] = p;}}void merge(std::string& p, std::string& q) {std::string p_father = get_father(p);std::string q_father = get_father(q);if (p_father != q_father) {_father[p_father] = q_father;}}std::string get_father(std::string& _p) {add(_p); //如果没有的节点,也要添加个节点std::string p = _p;while (_father[p] != p) {p = _father[p];}return p;}std::unordered_map<std::string, std::string> _father;
};
};

这篇关于面试题 17.07. 婴儿名字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067198

相关文章

Linux命令rm如何删除名字以“-”开头的文件

《Linux命令rm如何删除名字以“-”开头的文件》Linux中,命令的解析机制非常灵活,它会根据命令的开头字符来判断是否需要执行命令选项,对于文件操作命令(如rm、ls等),系统默认会将命令开头的某... 目录先搞懂:为啥“-”开头的文件删不掉?两种超简单的删除方法(小白也能学会)方法1:用“--”分隔命

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

Laravel 面试题

PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP

【吊打面试官系列-Redis面试题】说说 Redis 哈希槽的概念?

大家好,我是锋哥。今天分享关于 【说说 Redis 哈希槽的概念?】面试题,希望对大家有帮助; 说说 Redis 哈希槽的概念? Redis 集群没有使用一致性 hash,而是引入了哈希槽的概念,Redis 集群有 16384 个哈希槽,每个 key 通过 CRC16 校验后对 16384 取模来决定放置哪个槽, 集群的每个节点负责一部分 hash 槽。