leetcode 839 相似字串組

2021-10-18 13:26:22 字數 1011 閱讀 7324

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

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

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

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

示例 1:

輸入:strs = ["tars","rats","arts","star"]輸出:2
分析:

首先解決兩個字串是否相似的問題,由於給出的字串互相是字母異位詞,所以只需要判定字串相同位置為不同字元的數目,若為0或2則兩個字串相似,否則一定不相似。

然後對給出的字串陣列進行倆倆比對,若字串相似,則在並查集中將這兩個字串進行合併,合併後這兩個字串的根字串一致代表他們在同一組關係中。求相似字串組即求並查集中不同合併關係的數目。

class solution 

return x;

}void union(int x, int y)

}//以上為並查集模板

public int numsimilargroups(string strs) }}

int res = 0;

for(int i = 0; i < n; i++)

return res;

}boolean check(string a, string b)

return cnt <= 2;

}}

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 相似字串組

題意為 找到能交換兩個字元或者相同的就在一組,如果一堆中只有乙個符合這樣的條件就在這個堆中,即ab滿足條件 bc滿足條件那麼abc就在一堆中。並查集,先查詢 再合併到乙個堆中。這裡學習到乙個點就是標記的時候都可以用數字標記,只要符合條件即可,用什麼標記都行。還有題目中給出的是字母異位詞,即只是字母順...