題意為:找到能交換兩個字元或者相同的就在一組,如果一堆中只有乙個符合這樣的條件就在這個堆中,即ab滿足條件 bc滿足條件那麼abc就在一堆中。
並查集,先查詢 再合併到乙個堆中。
這裡學習到乙個點就是標記的時候都可以用數字標記,只要符合條件即可,用什麼標記都行。
還有題目中給出的是字母異位詞,即只是字母順序不同,其餘相同,即這裡只需要判斷字母不相同的個數即可。
還需要注意字元相同的情況下也符合條件。
class
solution
}int
find
(int x)
return x;
}void
join
(int a ,
int b)
}bool
issimilar
(string a,string b)
if(wa ==
2|| wa ==0)
return
true
;return
false;}
intnumsimilargroups
(vector
& strs)}}
int sum =0;
for(
int i =
0; i < n; i++)}
return sum;}}
;
LeetCode 839 相似字串組
如果我們交換字串 x 中的兩個不同位置的字母,使得它和字串 y 相等,那麼稱 x 和 y 兩個字串相似。例如,tars 和 rats 是相似的 交換 0 與 2 的位置 rats 和 arts 也是相似的,但是 star 不與 tars rats 或 arts 相似。總之,它們通過相似性形成了兩個關...
leetCode 839 相似字串組
由題目可知,只要兩個字串相似則它們屬於同乙個連通分量,可以通過並查集維護連通分量的個數,最後返回。class solution return uf.getcount class unionfind public intfind int x return x public boolean union ...
leetcode 839 相似字串組
如果交換字串 x 中的兩個不同位置的字母,使得它和字串 y 相等,那麼稱 x 和 y 兩個字串相似。如果這兩個字串本身是相等的,那它們也是相似的。例如,tars 和 rats 是相似的 交換 0 與 2 的位置 rats 和 arts 也是相似的,但是 star 不與 tars rats 或 art...