链接:剑指 Offer II 117. 相似的字符串

题解:

1.建设图

2.bfs遍历

class Solution {
public:int numSimilarGroups(vector<string>& strs) {std::unordered_map<int, std::vector<int>> graph;for (int i = 0; i < strs.size(); ++i) {for (int j = 0; j < strs.size(); ++j) {if (is_similar(strs[i], strs[j])) {graph[i].push_back(j);}}}std::vector<bool> visited(strs.size(), false);int result = 0;for (int i = 0; i < strs.size(); ++i) {if (visited[i]) {continue;}bfs(graph, i, visited);++result;}return result;}
private:bool is_similar(const std::string& str1, const std::string& str2) {int cnt = 0;for (int i = 0; i < str1.size(); ++i) {if (str1[i] != str2[i]) {++cnt;}}return cnt <= 2;}void bfs(std::unordered_map<int, std::vector<int>>& graph, int begin, std::vector<bool>& visited) {std::queue<int> que;que.push(begin);visited[begin] = true;while (!que.empty()) {auto& f = que.front();que.pop();for (auto neighboard : graph[f]) {if (visited[neighboard]) {continue;}visited[neighboard] = true;que.push(neighboard);}}}
};

剑指 Offer II 117. 相似的字符串相关推荐

  1. Leetcode刷题笔记——剑指offer II (六)【图】

    文章目录 图 695. 岛屿的最大面积 剑指 Offer II 106. 二分图 (每条边的两个结点都来自不同的集合) 剑指 Offer II 107. 矩阵中的距离 (最短路问题,建图,BFS) 剑 ...

  2. 剑指 Offer II 014. 字符串中的变位词

    剑指 Offer II 014. 字符串中的变位词 题目 示例 解答 题目来源为leetcode 题目 给定两个字符串s1和s2,写一个函数来判断s2是否包含s1的某个变位词. 换句话说,第一个字符串 ...

  3. 剑指 Offer II 017. 含有所有字符的最短字符串

    剑指 Offer II 017. 含有所有字符的最短字符串 给定两个字符串 s 和 t .返回 s 中包含 t 的所有字符的最短子字符串.如果 s 中不存在符合条件的子字符串,则返回空字符串 &quo ...

  4. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  5. leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树

    leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...

  6. 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)

    剑指 Offer II 114. 外星文字典 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同. 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按 ...

  7. 力扣OJ 剑指 Offer II

    目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...

  8. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】

    这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...

  9. LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和

    剑指 Offer II 056. 二叉搜索树中两个节点之和 Ideas 这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查 ...

最新文章

  1. Requirement already satisfied 解决方法
  2. 防盗链技术底层实现原理分析
  3. Acwing 1082. 数字游戏
  4. 修改linux的最大文件句柄数限制
  5. linux数字雨代码解释,linux提权 漏洞合集 linux-kernel-exploits
  6. 学习资料(干货汇集)不断更新【更新于2017-9-17】
  7. PADS logic 和PADS layout 连接
  8. ctf misc 图片题知识点
  9. 2021-08-13
  10. matlab心电信号处理,基于MATLAB的心电信号的数字滤波处理
  11. 半导体封装测试英语词汇量的软件,半导体英语
  12. 怎么查看计算机mac地址,怎么查电脑的mac地址?电脑mac地址查询方法
  13. 云计算趋势:从SAS和RAID看服务器与存储的融合
  14. 【年终总结】2017年下半年年终总结——试着将一切归零,整装再出发
  15. 功能测试--如何对时间(年月日)进行测试
  16. matlab实现数据压缩,【Matlab】Huffman编码如何实现数据压缩
  17. java归并排序算法
  18. 选择SaaS供应商的15个关键问题
  19. WIN10下调用waveInOpen方法失败返回错误1的解决方法
  20. 鸿蒙灵根有哪些,关于神话中十大灵根,你知道的有我多吗?

热门文章

  1. 如何在原生微信小程序中实现数据双向绑定
  2. VirtualBox虚拟机 四种网络接入模式
  3. Python 函数式编程,从入门到放弃
  4. 计科1高雨妍作业(2)
  5. Kernel那些事儿之内存管理(8) --- Slab(中)
  6. Ubuntu设置目录的读写权限(Linux命令chmod 777 dirName)
  7. linux Centos 配置本地yum源
  8. Smartmail外贸CRMBuild1.0版系统白皮书
  9. Go 编码建议——功能篇
  10. Linux下使用awk批量删除共享内存