1202 交換字串中的元素 ( 並查集 )

2021-10-14 12:56:18 字數 843 閱讀 7521

leetcode: 1202. 交換字串中的元素

並查集, 類似 leetcode 223 周賽第三題

將pair中關聯的字元連通新增進優先佇列中 ( 幾個圈子各自排序,然後插入

思路:幾個下標的字母,如有交換關係,則可看作有傳遞關係,可歸併成乙個圈子,

然後每個圈圈裡的字母按從小到大排序,這裡用到hashmap,優先佇列,

每個根節點作key,value為小堆,依次遍歷s下標,查到對應的根節點,即可找到map中的優先佇列,poll堆頂即可

ac code

class

solution

public

void

union

(int x,

int y)

public string smalleststringwithswaps

(string s, list

> pairs)

// 連通

for(list

list : pairs)

map> map =

newhashmap

<

>()

;for

(int i =

0; i < len; i++

)// 計算

for(

int i =

0; i < len; i++

)return sb.

tostring();}}

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...

leetcode 1202 交換字串中的元素

給你乙個字串 s,以及該字串中的一些 索引對 陣列 pairs,其中 pairs i a,b 表示字串中的兩個索引 編號從 0 開始 你可以 任意多次交換 在 pairs 中任意一對索引處的字元。返回在經過若干次交換後,s 可以變成的按字典序最小的字串。示例 1 輸入 s dcab pairs 0,...