Leetcode-5199 Smallest String With Swaps(交换字符串中的元素)
时间:2019-09-22
本文章向大家介绍Leetcode-5199 Smallest String With Swaps(交换字符串中的元素),主要包括Leetcode-5199 Smallest String With Swaps(交换字符串中的元素)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1 #define _for(i,a,b) for(int i = (a);i < b;i ++) 2 #define _rep(i,a,b) for(int i = (a);i > b;i --) 3 #define INF 0x3f3f3f3f 4 #define MOD 1000000007 5 #define pb push_back 6 #define maxn 100003 7 8 int par[maxn]; //父亲 9 int high[maxn]; //树的高度 10 11 void init(int n) 12 { 13 _for(i,0,n) 14 { 15 par[i] = i; 16 high[i] = 0; 17 } 18 } 19 20 int find(int x) 21 { 22 return par[x] == x ? x : par[x] = find(par[x]); 23 } 24 25 void unite(int x,int y) 26 { 27 x = find(x); 28 y = find(y); 29 if(x==y) return ; 30 31 if(high[x]<high[y]) 32 par[x] = y; 33 else 34 { 35 par[y] = x; 36 if(high[x]==high[y]) 37 high[x] ++; 38 } 39 } 40 41 bool same(int x,int y) 42 { 43 return find(x) == find(y); 44 } 45 46 class Solution 47 { 48 vector<int> a[maxn]; 49 public: 50 string smallestStringWithSwaps(string s, vector<vector<int>>& pairs) 51 { 52 int n = s.size(); 53 string rnt = s; 54 init(n); 55 _for(i,0,pairs.size()) 56 unite(pairs[i][0],pairs[i][1]); 57 58 _for(i,0,s.size()) 59 a[find(i)].pb(i); 60 61 _for(i,0,n) 62 { 63 string tmp; 64 _for(j,0,a[i].size()) 65 tmp += s[a[i][j]]; 66 sort(tmp.begin(),tmp.end()); 67 _for(j,0,a[i].size()) 68 rnt[a[i][j]] = tmp[j]; 69 } 70 return rnt; 71 } 72 };
原文地址:https://www.cnblogs.com/Asurudo/p/11566949.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法