相似字串組(思維 並查集)

2021-10-18 13:22:13 字數 907 閱讀 8484

原題鏈結

思路分析:

觀察題面後發現兩個字串相似與否的條件只有兩個:

兩個字串本身就是相等的,例如 「abc

abcab

c」 與 「abc

abcab

c」 相似。

兩個字串在經過一次交換後相等(只可以交換一次,且只能交換兩個元素),例如 「abc

abcab

c」 與 「acb

acbac

b」 相似,但 「abc

abcab

c」 與 「cab

cabca

b」 卻不相似。

末尾備註中提示了所有字串均為字母異或詞,所以不存在字串a

aa 有的元素,字串b

bb卻沒有的情況。

綜上所述,我們判斷兩個字串是否相似,只需要判斷對應位置的元素不同的個數是否小於等於 2

22 即可。

將所有字串抽象為圖中的節點,題目中詢問的其實就是圖中聯通分量的個數,所以採用並查集維護。

c od

e:

code:

code

:

class

unionfind

}int

find

(int x)

bool

same

(int x,

int y)

void

unite

(int x,

int y)};

bool

solve

(string& a,string& b)

}return cnt <=2;

}class

solution}}

return t.count;}}

;

力扣 839 相似字串組 並查集

思路 仔細審題,關鍵是字母異位詞,這就說明所有字串的長度一樣,且含有的字母都相同,那麼就可以比較簡單的判斷兩個字串是否是相似的,直接遍歷第乙個字串,統計同一位置但字元不相等的位置總數,若其等於0或2則相似,時間複雜度為o s trle n o strlen o strl en 那麼暴力比較字串並用並...

leetcode 839 相似字串組(並查集)

如果交換字串 x 中的兩個不同位置的字母,使得它和字串 y 相等,那麼稱 x 和 y 兩個字串相似。如果這兩個字串本身是相等的,那它們也是相似的。例如,tars 和 rats 是相似的 交換 0 與 2 的位置 rats 和 arts 也是相似的,但是 star 不與 tars rats 或 art...

並查集 思維 X Plosives

一 問題描述 題目鏈結 有n種化合物,每種化合物由兩種元素組成。當幾種的化合物數量等於他們所含不同元素的數量時,就會發生 現在依次給出化合物的組成,當新的化合物與之前的化合物放在一起會發生 時,就不能允許這個化合物放進來。輸出拒絕的次數。二 問題分析 把元素看成點,化合物看成邊,每次新的化合物進來當...