LeetCode 839 相似字串組

2022-06-24 17:51:13 字數 666 閱讀 1746

困難題,沒有想到並查集的思想,並且很久不做有點生疏;

以前並查集都是針對於單個目標的次序排列問題,頭一次遇到這種歸類問題;

基礎思想是判斷兩個字串是否屬於一類,但是這乙個問題也蘊含了次序的問題;

例如,a,b,c;

有可能a,b相似,b,c相似,而a,c不相似;

也有可能a,c相似,b,c相似,a,b不相似;

所以就可以採用並查集的思想,直接把這種次序轉化為根節點是否是同類,來進行合併,最後數數有幾個並查集即可;

遇到問題點:

合併的時候是根節點合併,自己蠢得一筆各種葉節點合併到根節點,導致最後並查集合並錯誤;

class solution 

bool issimilar(const string& a, const string& b)

if (count > 2)

return false;

else

return true;

}int findfather(int x)

int numsimilargroups(vector& strs) }}

int count = 0;

for (int i = 0; i < father.size(); i++)

return count;

}};

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就在一堆中。並查集,先查詢 再合併到乙個堆中。這裡學習到乙個點就是標記的時候都可以用數字標記,只要符合條件即可,用什麼標記都行。還有題目中給出的是字母異位詞,即只是字母順...