839.相似字符串组

每个字符串看作一个点,两个字符串之间是否相似看作边,则本题转化为图中有多少连通分量

//并查集模板
class UnionFind{vector<int>parent;vector<int>size;int n;int setCount;
public:UnionFind(int _n):n(_n),setCount(_n),parent(_n),size(_n,1){iota(parent.begin(),parent.end(),0);}public:int findset(int x){return x==parent[x]?x:parent[x]=findset(parent[x]);}bool unite(int x,int y){x = findset(x);y = findset(y);if(x == y)return false;if(size[x]<size[y])swap(x,y);parent[y]=x;size[x]+=size[y];setCount--;return true;}bool connected(int x,int y){return x==y;}int get_setCount(){return setCount;}bool similar(string &a,string &b,int len){//比较两字符串不同的字符int cnt = 0;for(int i=0;i<len;i++){if(a[i]!=b[i]){cnt++;if(cnt>2)return false;}}return true;}
};
class Solution {
public:int numSimilarGroups(vector<string>& strs) {int n = strs.size();int m = strs[0].size();UnionFind uf(n);for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(uf.connected(i,j))continue;if(uf.similar(strs[i],strs[j],m))uf.unite(i,j);//如果两字符串相似,则连通}}return uf.get_setCount();}
};

leetcode839相似字符串组相关推荐

  1. LeetCode中等题之特殊等价字符串组

    题目 给你一个字符串数组 words. 一步操作中,你可以交换字符串 words[i] 的任意两个偶数下标对应的字符或任意两个奇数下标对应的字符. 对两个字符串 words[i] 和 words[j] ...

  2. leetcode 839. 相似字符串组(并查集)

    如果交换字符串 X 中的两个不同位置的字母,使得它和字符串 Y 相等,那么称 X 和 Y 两个字符串相似.如果这两个字符串本身是相等的,那它们也是相似的. 例如,"tars" 和 ...

  3. LeetCode 893. 特殊等价字符串组

    1. 题目 你将得到一个字符串数组 A. 如果经过任意次数的移动,S == T,那么两个字符串 S 和 T 是特殊等价的. 一次移动包括选择两个索引 i 和 j,且 i % 2 == j % 2,交换 ...

  4. C#LeetCode刷题之#893-特殊等价字符串组​​​​​​​​​​​​​​(Groups of Special-Equivalent Strings)

    问题 你将得到一个字符串数组 A. 如果经过任意次数的移动,S == T,那么两个字符串 S 和 T 是特殊等价的. 一次移动包括选择两个索引 i 和 j,且 i%2 == j%2,并且交换 S[j] ...

  5. LeetCode(893)——特殊等价字符串组(JavaScript)

    你将得到一个字符串数组 A. 如果经过任意次数的移动,S == T,那么两个字符串 S 和 T 是特殊等价的. 一次移动包括选择两个索引i和j,且i % 2 == j % 2,交换 S[j] 和 S ...

  6. 893. 特殊等价字符串组

    特殊等价字符串组 转载于:https://www.cnblogs.com/hglibin/p/11000851.html

  7. 839. 相似字符串组

    链接:839. 相似字符串组 题解: class Solution {public:vector<int> _rank;vector<int> _id;int find(int ...

  8. [leetcode] 839. 相似字符串组并查集

    class USF { public:int *parent;int *rank;int groupCount; //组数USF(int n){parent = new int[n];rank = n ...

  9. C++用字符串组成心形图案的尝试

    在网上看到好多有奇特图案的函数,比如这个公式,能绘出这样的心形图案. 为了用字符把心形区域填满,只需要设置for循环用x和y表示出一个方形画布区域,如果左边表达式的值不大于右边表达式1,则说明坐标位于 ...

最新文章

  1. ob_get_contents();basename;file_get_contents用法
  2. RxJava 在Android中的应用(一)
  3. jquery一个控件绑定多个事件
  4. WinCE BSP的BIB文件介绍
  5. 腾讯汤道生:AI是产业互联网的“中央处理器”,数字技术融合打造产业新动能
  6. do sb suggest to_suggest sb to do还是doing
  7. 100 以内的数的研究
  8. UTM 用户线程模型
  9. java 运算符的程序_【Java】运算符
  10. esp ghost引导_ghost做uefi+gpt 需要什么cmd命令修复引导?
  11. python通信系统仿真_Python与V-REP联合仿真
  12. arduino编码器计数_基于Arduino开发环境的光电编码器检测仪设计方案
  13. 环状序列|得分(UVa1584|UVa1585)
  14. “绿萌”仿“大麦”演出购票APP
  15. TeamViewer的安装和使用方法
  16. RabbitMq 消息中间件介绍初体验
  17. java读取dcm影像文件_DCM医学影像文件的格式与读取方法分享
  18. 魔兽铃声(适合做短信铃声)铃声 魔兽铃声(适合做短信铃声)手机...
  19. 利用Python进行数据分析 学习笔记
  20. 【英文文本分类实战】之一——实战项目总览

热门文章

  1. cs6制作拼图游戏 dreamweaver_Dreamweaver拼图游戏的实现
  2. VMware学习笔记之在虚拟机中使用Ghost系统盘安装xp黑屏卡在光标闪无法进入系统...
  3. Android Studio版本控制之SVN图文教程篇
  4. Jenkins配置ldap错误导致无法登陆的问题
  5. 判断一个字符串是否经过base64加密过
  6. 【豪威科技】Omnivision简称OV专业开发高度集成CMOS影像技术
  7. 机顶盒demux的流程
  8. BootStrap #响应式布局 #组件
  9. Unity Scroll View列表滑动时 列表内图片边缘闪烁问题解决
  10. 大师系列之价值投资选股策略