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

如果交換字符串 X 中的兩個不同位置的字母,使得它和字符串 Y 相等,那么稱 X 和 Y 兩個字符串相似。如果這兩個字符串本身是相等的,那它們也是相似的。

例如,“tars” 和 “rats” 是相似的 (交換 0 與 2 的位置); “rats” 和 “arts” 也是相似的,但是 “star” 不與 “tars”,“rats”,或 “arts” 相似。

總之,它們通過相似性形成了兩個關聯組:{“tars”, “rats”, “arts”} 和 {“star”}。注意,“tars” 和 “arts” 是在同一組中,即使它們并不相似。形式上,對每個組而言,要確定一個單詞在組中,只需要這個詞和該組中至少一個單詞相似。

給你一個字符串列表 strs。列表中的每個字符串都是 strs 中其它所有字符串的一個字母異位詞。請問 strs 中有多少個相似字符串組?

示例 1:

輸入:strs = [“tars”,“rats”,“arts”,“star”]
輸出:2

代碼

class Solution {int[] fa;public void  init(){for(int i=0;i<fa.length;i++)fa[i]=i;}public int  find(int x){if(x!=fa[x])fa[x]=find(fa[x]);return fa[x];}public void   union(int x,int y){x=find(x);y=find(y);if(x==y) return;fa[x]=y;}public int numSimilarGroups(String[] strs) {int n=strs.length,c=n;fa=new int[n];init();for(int i=0;i<n;i++)//遍歷所有字符串的兩兩組合for(int j=i+1;j<n;j++){if(find(i)==find(j)) continue;if(checkNumSimilarGroups(strs[i],strs[j])){union(i,j);  c--;//統計連通分量}}return c;}public boolean checkNumSimilarGroups(String l,String r) {//判斷是否相似int n=l.length(),cnt=0;for(int i=0;i<n;i++)if(l.charAt(i)!=r.charAt(i)) cnt++;return cnt==2||cnt==0;}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392074.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392074.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392074.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android intent參數是上次的結果,【Android】7.0 Intent向下一個活動傳遞數據、返回數據給上一個活動...

1.0 可以利用Intent吧數據傳遞給上一個活動&#xff0c;新建一個叫“hellotest01”的項目。新建活動FirstActivity&#xff0c;勾選“Generate Layout File”和“Launcher Activity”。image修改AndroidMainifest.xml中的內容&#xff1a;android:name".FirstActivity&quo…

實習一年算工作一年嗎?_經過一年的努力,我如何找到軟件工程工作

實習一年算工作一年嗎?by Andrew Ngo通過安德魯恩戈 經過一年的努力&#xff0c;我如何找到軟件工程工作 (How I landed a software engineering job after a year of hard work) Many of us think the path to becoming a software engineer requires years of education an…

學習深度學習需要哪些知識_您想了解的有關深度學習的所有知識

學習深度學習需要哪些知識有關深層學習的FAU講義 (FAU LECTURE NOTES ON DEEP LEARNING) Corona was a huge challenge for many of us and affected our lives in a variety of ways. I have been teaching a class on Deep Learning at Friedrich-Alexander-University Erlan…

參加開發競賽遇到的問題【總結】

等比賽完就寫。 轉載于:https://www.cnblogs.com/jiangyuanjia/p/11261978.html

html5--3.16 button元素

html5--3.16 button元素 學習要點 掌握button元素的使用button元素 用來建立一個按鈕從功能上來說&#xff0c;與input元素建立的按鈕相同button元素是雙標簽&#xff0c;其內部可以配置圖片與文字&#xff0c;進行更復雜的樣式設計不僅可以在表單中使用&#xff0c;還可以在其…

如何注冊鴻蒙id,鴻蒙系統真機調試證書 和 設備ID獲取

鴻蒙系統真機調試創建項目創建項目創建應用創建鴻蒙應用(注意&#xff0c;測試階段需要發郵件申請即可)關聯應用項目進入關聯 添加引用準備調試使用的 p12 和證書請求 csr使用以下命令// 別名"test"可以修改&#xff0c;但必須前后一致&#xff0c;密碼請自行修改key…

Java—實現 IOC 功能的簡單 Spring 框架

編寫一個實現 IOC 功能的簡單 Spring 框架&#xff0c;包含對象注冊、對象管理、及暴 露給外部獲取對象的功能&#xff0c;并編寫測試程序。擴展注冊器的方式&#xff0c;要求采用 XML 和 txt 文件。 源代碼 package myspring;import java.lang.reflect.Method; import java.…

讀zepto核心源碼學習JS筆記(3)--zepto.init()

上篇已經講解了zepto.init()的幾種情況,這篇就繼續記錄這幾種情況下的具體分析. 1. 首先是第一種情況,selector為空 既然是反向分析,那我們先看看這句話的代碼; if (!selector) return zepto.Z() 這里的返回值為zepto.Z();那我們繼續往上找zepto.Z()函數 zepto.Z function(dom…

css flexbox模型_Flexbox和CSS Grid之間的主要區別

css flexbox模型by Shaira Williams由莎拉威廉姆斯(Shaira Williams) Flexbox和CSS Grid之間的主要區別 (The main differences between Flexbox and CSS Grid) Dimensions define the primary demarcation between Flexbox and CSS Grid. Flexbox was designed specifically …

置信區間估計 預測區間估計_估計,預測和預測

置信區間估計 預測區間估計Estimation implies finding the optimal parameter using historical data whereas prediction uses the data to compute the random value of the unseen data.估計意味著使用歷史數據找到最佳參數&#xff0c;而預測則使用該數據來計算未見數據的…

鴻蒙系統還會推出嗎,華為明年所有自研設備都升級鴻蒙系統,還會推出基于鴻蒙系統的新機...

不負期許&#xff0c;華為鴻蒙OS手機版如期而至。今日(12月15日)&#xff0c;鴻蒙OS 2.0手機開發者Beta版本正式上線&#xff0c;支持運行安卓應用&#xff0c;P40、Mate 30系列可申請公測。國內媒體報道稱&#xff0c;華為消費者業務軟件部副總裁楊海松表示&#xff0c;按照目…

C#中將DLL文件打包到EXE文件

1&#xff1a;在工程目錄增加dll目錄&#xff0c;然后將dll文件復制到此目錄&#xff0c;例如&#xff1a; 2&#xff1a;增加引用&#xff0c;定位到工程的dll目錄&#xff0c;選中要增加的dll文件 3&#xff1a;修改dll文件夾下面的dll文件屬性 選中嵌入式資源&#xff0c;不…

PopupMenu控件的使用

1、用PopupMenu控件能進行右鍵菜單的實現&#xff0c;它的實現還需要綁定到barManager控件上&#xff0c;在barManager的Customize中添加右鍵所需要顯示的功能。 2、PopupMenu屬性欄中綁定Manager為barManager&#xff1b; 3、窗體加載事件中創建 this.popupMenu1.AddItems(new…

Java—動態代理

動態代理利用了JDK API&#xff0c;動態地在內存中構建代理對象&#xff0c;從而實現對目標對象的代理功能。動態代理又被稱為JDK代理或接口代理。 靜態代理與動態代理的區別主要在&#xff1a; 靜態代理在編譯時就已經實現&#xff0c;編譯完成后代理類是一個實際的class文件…

Oracle VM Virtual Box的安裝

安裝Oracle VM Virtual Box安裝擴展插件 選擇"管理"?"全局設定" 在設置對話框中&#xff0c;選擇"擴展" 選擇"添加包" 找到"Oracle_VM_VirtualBox_Extension_Pack-4.1.18-78361"&#xff0c;點擊"打開" 5&#x…

python 移動平均線_Python中的SMA(短期移動平均線)

python 移動平均線With the evolution of technology rapidly evolving, so do strategies in the stock market. In this post, I’ll go over how I created a SMA(Short Moving Average) strategy.隨著技術的飛速發展&#xff0c;股票市場的策略也在不斷發展。 在本文中&…

angular中的href=unsafe:我該怎么擺脫你的溺愛!!

解決方法&#xff1a;angular.module加入下面這行&#xff1a;&#xff08;依據Angular changes urls to “unsafe:” in extension page&#xff09; .config(function($compileProvider){//注:有些版本的angularjs為$compileProvider.urlSanitizationWhitelist(/^\s*(https?…

android view gesturedetector,如何在Android中利用 GestureDetector進行手勢檢測

如何在Android中利用 GestureDetector進行手勢檢測發布時間&#xff1a;2020-11-26 16:15:21來源&#xff1a;億速云閱讀&#xff1a;92作者&#xff1a;Leah今天就跟大家聊聊有關如何在Android中利用 GestureDetector進行手勢檢測&#xff0c;可能很多人都不太了解&#xff0c…

Ubuntu2204配置samba

0.前情說明 samba服務器主要是用來局域網共享文件的&#xff0c;如果想公網共享可能行不通&#xff0c;我已經踩坑一天了 所以說如果你想滿足公網samba共享你就可以不要看下去了 1.參考連接 Ubuntu 安裝 Samba 服務器_ubuntu安裝samba服務器-CSDN博客 2.安裝samba服務 sud…

Java—BIO模型

利用 BIO 模型&#xff08;傳統阻塞 IO 模型&#xff09;實現多用戶訪問 源代碼 Server類 public class server {public static void main(String[] args) {ExecutorService executorService Executors.newFixedThreadPool(6);try {ServerSocket serverSocketnew ServerSocke…