給你乙個字串 s,以及該字串中的一些「索引對」陣列 pairs,其中 pairs[i] = [a, b] 表示字串中的兩個索引(編號從 0 開始)。
你可以 任意多次交換 在 pairs 中任意一對索引處的字元。
返回在經過若干次交換後,s 可以變成的按字典序最小的字串。
示例 1:
示例 2:輸入:s =
"dcab"
, pairs =[[
0,3]
,[1,
2]]輸出:"bacd"
解釋:
交換 s[
0] 和 s[3]
, s =
"bcad"
交換 s[
1] 和 s[2]
, s =
"bacd"
示例 3:輸入:s =
"dcab"
, pairs =[[
0,3]
,[1,
2],[
0,2]
]輸出:"abcd"
解釋:交換 s[
0] 和 s[3]
, s =
"bcad"
交換 s[
0] 和 s[2]
, s =
"acbd"
交換 s[
1] 和 s[2]
, s =
"abcd"
暫時參考這裡輸入:s =
"cba"
, pairs =[[
0,1]
,[1,
2]]輸出:"abc"
解釋:交換 s[
0] 和 s[1]
, s =
"bca"
交換 s[
1] 和 s[2]
, s =
"bac"
交換 s[
0] 和 s[1]
, s =
"abc"
public string smalleststringwithswaps
(string s, list
> pairs)
// 2.構建對映關係
char
chararray = s.
tochararray()
; map
> hashmap =
newhashmap
>
(len)
;for
(int i =
0; i < len; i++
)else
}// 3.重組字串
stringbuilder stringbuilder =
newstringbuilder()
;for
(int i =
0; i < len; i++
)return stringbuilder.
tostring()
;}// 並查集
private
class
unionfind
}public
void
union
(int x,
int y)
else
if(rank[rootx]
< rank[rooty]
)else
}public
intfind
(int x)
return parent[x];}
}
1202 交換字串中的元素
1202.交換字串中的元素 給你乙個字串s,以及該字串中的一些 索引對 陣列pairs,其中pairs i a,b 表示字串中的兩個索引 編號從 0 開始 你可以任意多次交換在pairs中任意一對索引處的字元。返回在經過若干次交換後,s可以變成的按字典序最小的字串。示例 1 輸入 s dcab pa...
1202 交換字串中的元素
給你乙個字串 s,以及該字串中的一些 索引對 陣列 pairs,其中 pairs i a,b 表示字串中的兩個索引 編號從 0 開始 你可以 任意多次交換 在 pairs 中任意一對索引處的字元。返回在經過若干次交換後,s 可以變成的按字典序最小的字串。class solution return f...
1202 交換字串中的元素 ( 並查集 )
leetcode 1202.交換字串中的元素 並查集,類似 leetcode 223 周賽第三題 將pair中關聯的字元連通新增進優先佇列中 幾個圈子各自排序,然後插入 思路 幾個下標的字母,如有交換關係,則可看作有傳遞關係,可歸併成乙個圈子,然後每個圈圈裡的字母按從小到大排序,這裡用到hashma...