目录
一、思路
1.数据存储与处理
通过 unordered_map<string, int> 类型的 mp 来存储城市信息和统计相关数量。在读取每个城市名称和所在州代码后,取城市名称的前两个字母作为关键信息,若该关键信息与所在州代码相同则跳过,因为不符合特殊城市对的条件,特殊城市对要求来自不同州。
2.判断特殊城市对
利用 mp 来判断是否存在特殊城市对。对于每一组读取到的城市信息,将州代码和城市名称前两个字母组合成一个字符串,如 sta + cit,查询 mp 中该字符串对应的数量,将其累加到 ret 中,这一步是统计之前已经出现过的符合特殊城市对关系的数量。然后将本次的城市记录,名称前两个字母和州代码组合成另一个字符串,如 cit + sta,以便后续判断是否能构成特殊城市对。
二、求解
三、注意的点
1.字符串组合顺序
在 mp 中存储和查询时,要注意字符串组合的顺序。sta + cit 和 cit + sta 是不同的字符串,代表不同的城市 - 州关系组合,不能混淆。
2.特殊情况处理
处理了城市名称前两个字母和所在州代码相同的情况,通过 if (cit == sta) continue; 跳过。
四、知识点
1.unordered_map 的使用
unordered_map 是 C++ 标准库中的关联容器,基于哈希表实现,具有平均 O(1) 的插入、查找和删除操作时间复杂度。在本题中用于快速存储和查询城市 - 州关系组合的数量,以判断是否构成特殊城市对。
2.字符串操作
使用了 substr 方法来截取城市名称的前两个字母,同时对字符串进行拼接,如 sta + cit 和 cit + sta,这是处理字符串相关问题的常见操作。