難度困難93
如果交換字串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示例 2:
輸入:strs = ["omv","ovm"]輸出:1
備註:
字母異位詞(anagram),一種把某個字串的字母的位置(順序)加以改換所形成的新詞。
題目分析:這個題目主要在於分析題目,需要知道的是相似字串組的數量,而不是相似字串的數量。因此是求出最後各個集合的數量,很容易想到要採用並查集的方法,對所有的兩兩組合進行判斷是否相似,進而合併。
class solution
} int find_set(int x)
bool union(vector& strs, int x, int y)
}if (dif == 0 || dif == 2)
return 1;
} return 0;
}public:
int numsimilargroups(vector& strs)
} setres;
for (int i = 0; i < strs.size(); ++i)
return res.size();
}};
839 相似字串組
839.相似字串組 如果交換字串x中的兩個不同位置的字母,使得它和字串y相等,那麼稱x和y兩個字串相似。如果這兩個字串本身是相等的,那它們也是相似的。例如,tars 和 rats 是相似的 交換0與2的位置 rats 和 arts 也是相似的,但是 star 不與 tars rats 或 arts ...
839 相似字串組
如果交換字串 x 中的兩個不同位置的字母,使得它和字串 y 相等,那麼稱 x 和 y 兩個字串相似。如果這兩個字串本身是相等的,那它們也是相似的。例如,tars 和 rats 是相似的 交換 0 與 2 的位置 rats 和 arts 也是相似的,但是 star 不與 tars rats 或 art...
839 相似字串組
如果交換字串x中的兩個不同位置的字母,使得它和字串y相等,那麼稱x和y兩個字串相似。如果這兩個字串本身是相等的,那它們也是相似的。例如,tars 和 rats 是相似的 交換0與2的位置 rats 和 arts 也是相似的,但是 star 不與 tars rats 或 arts 相似。總之,它們通過...