839. 相似字符串组(union findbfs)
链接839. 相似字符串组题解class Solution { public: int numSimilarGroups(vectorstring strs) { std::unordered_mapint, std::vectorint 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::vectorbool 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_mapint, std::vectorint graph, int begin, std::vectorbool visited) { std::queueint 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); } } } };class Solution { public: vectorint _rank; vectorint _id; int find(int p) { while(_id[p] ! p) { _id[p] _id[_id[p]]; p _id[p]; } return p; } void union_find(int p, int q) { int root_p find(p); int root_q find(q); if(root_p root_q) { return; } if(_rank[root_p] _rank[root_q]) { _id[root_p] root_q; } else if(_rank[root_q] _rank[root_p]) { _id[root_q] root_p; } else { _id[root_p] root_q; _rank[root_q] 1; } } bool is_connected(int p, int q) { return find(p) find(q); } int get_size() { int cnt 0; for(int i 0; i _id.size(); i) { if(_id[i] i) { cnt; } } return cnt; } bool check(const std::string s1, const std::string s2) { int cnt 0; for(int i 0; i s1.size(); i) { if(s1[i] ! s2[i]) { cnt; } if(cnt 2) { return false; } } return true; } int numSimilarGroups(vectorstring strs) { if(strs.size() 0) { return 0; } _rank.resize(strs.size(), 1); _id.resize(strs.size()); // 每个字符串自己为一个节点 for(int i 0; i strs.size(); i) { _id[i] i; } //判断一个字符串是否与其他的字符串满足一个组的条件 for(int i 0; i strs.size(); i) { for(int j i1; j strs.size(); j) { // 如果已经在一个组了 if(is_connected(i, j)) { continue; } // 检测是否满足规则 if(check(strs[i], strs[j])) { union_find(i, j); } } } return get_size(); } };

相关新闻

Nginx安装及设置成开机启动

Nginx安装及设置成开机启动

nginx配置https和IP白名单 nginx安装ssl证书并配置 nginx限制IP访问 通过yum来直接安装 # add the yum repo: wget https://openresty.org/package/centos/openresty.repo sudo mv openresty.repo /etc/yum.repos.d/# update the yum index: sudo yum check-updatesudo yum …

2026/8/25 7:41:27 阅读更多 →
三、elasticsearch之插件x-pack许可证安装说明

三、elasticsearch之插件x-pack许可证安装说明

概要 在elasticsearch中有30天的试用期,我找到网上大神的一些文章,试用了之后发现可以进行破解使用,整个过程比较简单,特此写下笔记 http://ip:9100/?auth_userelastic&auth_password123456 现在发现都访问不了,查…

2026/8/25 7:41:27 阅读更多 →
小样本数据评估难题:交叉验证原理、方法与实践指南

小样本数据评估难题:交叉验证原理、方法与实践指南

1. 项目概述:当数据成为瓶颈,交叉验证如何成为你的“定心丸”在数据科学和机器学习的实战中,我们最常听到的抱怨之一就是:“数据量太少了,模型根本训不好!” 这几乎是每个从业者,尤其是项目初期…

2026/8/25 7:41:27 阅读更多 →

最新新闻

原生JavaScript与Canvas实现Siri风格动态波纹:从数学建模到性能优化

原生JavaScript与Canvas实现Siri风格动态波纹:从数学建模到性能优化

1. 项目概述:从灵感到实现,一个纯粹的视觉魔法那天我在浏览一个设计类网站,偶然看到一个登录页的背景,几条优雅的波浪线随着鼠标的移动缓缓起伏,那种流畅、灵动又带点科技感的视觉效果,瞬间让我想起了苹果设…

2026/8/25 8:18:40 阅读更多 →
基于多模态AI的智能截图解析:从图片到结构化数据的工程实践

基于多模态AI的智能截图解析:从图片到结构化数据的工程实践

1. 项目概述:当截图不再是“图片”,而是一个可交互的数据接口最近在做一个内部效率工具时,我遇到了一个非常具体且普遍的问题:团队里每天产生大量的会议纪要截图、产品设计稿截图、数据报表截图,这些图片散落在各个聊天…

2026/8/25 8:18:40 阅读更多 →
C++除法陷阱与安全实践:从整数截断到工业级防护

C++除法陷阱与安全实践:从整数截断到工业级防护

1. 项目概述:这不是一道“送分题”,而是一次C底层能力的实战压力测试“C A除以B”——看到这个标题,很多人第一反应是:“这有什么好写的?不就是a / b吗?”我刚接触C时也这么想,直到在某次嵌入式…

2026/8/25 8:18:40 阅读更多 →
Linux服务器文件实时同步:rsync+lsyncd原理与生产环境部署指南

Linux服务器文件实时同步:rsync+lsyncd原理与生产环境部署指南

1. 项目缘起:为什么是rsynclsyncd?如果你在Linux环境下管理过服务器,尤其是那些需要处理大量文件、日志或者应用数据的场景,大概率会遇到一个经典需求:如何把A服务器上某个目录里的文件,实时或准实时地同步…

2026/8/25 8:18:40 阅读更多 →
如何从 v1 仓储升级到 v2 网关架构:Laravel feature-flags 完整升级指南与最佳实践

如何从 v1 仓储升级到 v2 网关架构:Laravel feature-flags 完整升级指南与最佳实践

如何从 v1 仓储升级到 v2 网关架构:Laravel feature-flags 完整升级指南与最佳实践 【免费下载链接】feature-flags A Laravel package for handling feature flags 项目地址: https://gitcode.com/gh_mirrors/fe/feature-flags 本指南面向使用 feature-flag…

2026/8/25 8:18:40 阅读更多 →
CentOS 7.9 Redis系统级安装:解决重启失效与配置丢失

CentOS 7.9 Redis系统级安装:解决重启失效与配置丢失

1. 为什么 CentOS 7.9 上装 Redis 不能只抄命令?——从“重启就失效”说起你是不是也遇到过这样的情况:在 CentOS 7.9 虚拟机里,用wget下载 Redis 源码、make && make install一气呵成,redis-server --version显示 5.0.3 …

2026/8/25 8:17:39 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →