描述:
某珠宝店的展示柜中摆放着一排由纯金打造的金卡,每张金卡上刻有一个大写或小写字母。为了吸引顾客,店员会根据指示进行调换操作。每次操作选择两个位置的金卡进行交换。请计算经过所有操作后,金卡的排列顺序。
输入:
第一行包含两个整数 和
,表示金卡的数量和操作次数。
第二行是一个长度为 的字符串,表示初始的金卡排列。题目保证字符串仅包含大小写字母,且
,
。
接下来 行,每行两个整数
和
,表示本次要交换的两个金卡的位置(位置从 1 开始编号)。
题目保证,所有操作中的位置都是有效的,即 。
输出:
输出一行,包含最终的字符串。
样例输入1:
5 2
ABCDE
1 3
2 4
样例输出1:
CDABE
样例输入2:
3 1
abc
1 2
样例输出2:
bac
样例输入2:
4 2
Gold
1 4
2 3
样例输出2:
dloG
注释:
在第一个样例中:
- 初始序列为
ABCDE
; - 交换位置 1 和 3 (A↔C)得到
CBADE
; - 交换位置 2 和 4 (B↔D)得到
CDABE
。
第三个样例中:
- 初始序列为
Gold
; - 交换位置 1 和 4 (G↔d)得到
dolG
; - 交换位置 3 和 2 (l↔o)得到
dloG
。
题目保证,对于 10% 的数据,n=1。
题目保证,对于 30% 的数据,m≤1。
题目保证,对于 60% 的数据,。
题目保证,对于 80% 的数据,。
题目保证,对于 100% 的数据,,
。
import java.util.*;
public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
int n = in.nextInt(), m = in.nextInt();
char[] chars = new char[n];
String str = in.next();
chars = str.toCharArray();//字符串转字符数组
for(int i = 0;i<m;i++){
int a = in.nextInt(), b = in.nextInt();
//交换字符
char tmp = chars[a - 1];
chars[a - 1] = chars[b - 1];
chars[b - 1] = tmp;
}
System.out.println(new String(chars));
}
}
附:南邮NOJ在线测评系统网址:主页 | NOJ上机系统
祝大家心想事成,一战成硕!!!❤❤❤