文章
时间轴
标签
音乐室
友人帐
一刻时光
清单
留言板
相册
算法海洋
关于
Slcpの童话镇 🏰
写文章
1202. 交换字符串中的元素
中等
Java
数据结构与算法
原题链接
发布日期:
2023年02月14日
文章字数:
5.1k
阅读次数:
463
阅读时长:
0小时0分0秒
## 解题思路 首先处理 pairs,可以将数组分成多个连通块 然后每个连通块分别排序 这里由于 s 中只有 小写字母, 所以排序可以利用桶排序的思想 > 复杂度分析 时间复杂度:O(n),桶排序所需时间 空间复杂度:O(n) ## 代码 ```java class Solution { int[] p = new int[(int)2e5 + 10]; private int find(int x) { if (p[x] != x) p[x] = find(p[x]); return p[x]; } public String smallestStringWithSwaps(String s, List<List<Integer>> pairs) { int[][] map = new int[s.length()][26]; for (int i = 0; i < p.length; i++) p[i] = i; for (List<Integer> pp : pairs) { int px = find(pp.get(0)); int py = find(pp.get(1)); p[px] = py; } for (int i = 0; i < s.length(); i++) { map[find(i)][s.charAt(i) - 'a']++; } StringBuilder sb = new StringBuilder(); for (int i = 0; i < map.length; i++) { int[] table = map[find(i)]; for (int k = 0; k < table.length; k++) { if (table[k] > 0) { sb.append((char) (k + 'a')); table[k]--; break; } } } return sb.toString(); } } ```
您阅读这篇文章共耗时:
0小时16分34秒
文章链接:
https://www.slcp.top/article/read/1625402107360387074
版权声明:
本博客所有文章除特別声明外,均采用
CC BY 4.0
许可协议。转载请注明来源
Slcp
!
转载文章以及部分引用均为自己整理记录学习而用,若有侵权,请联系删除。
Java
数据结构与算法
评论
Valine
Gitalk
目录
搜索
首页
前进
后退
刷新
申请友链
在线联系