南邮2025年研究生复试模拟[1039金卡换位]

描述:

某珠宝店的展示柜中摆放着一排由纯金打造的金卡,每张金卡上刻有一个大写或小写字母。为了吸引顾客,店员会根据指示进行调换操作。每次操作选择两个位置的金卡进行交换。请计算经过所有操作后,金卡的排列顺序。

输入:

第一行包含两个整数 n 和 m,表示金卡的数量和操作次数。

第二行是一个长度为 n 的字符串,表示初始的金卡排列。题目保证字符串仅包含大小写字母,且 1\leq n\leq 10^{5}, 0\leq m\leq 10^{5}

接下来 m 行,每行两个整数 a 和 b,表示本次要交换的两个金卡的位置(位置从 1 开始编号)。

题目保证,所有操作中的位置都是有效的,即 1\leq a, b\leq 10^{5}

输出:

输出一行,包含最终的字符串。

样例输入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

注释:

在第一个样例中:

  1. 初始序列为 ABCDE
  2. 交换位置 1 和 3 (A↔C)得到 CBADE
  3. 交换位置 2 和 4 (B↔D)得到 CDABE

第三个样例中:

  1. 初始序列为 Gold
  2. 交换位置 1 和 4 (G↔d)得到 dolG
  3. 交换位置 3 和 2 (l↔o)得到 dloG

题目保证,对于 10% 的数据,n=1。

题目保证,对于 30% 的数据,m≤1。

题目保证,对于 60% 的数据,n\leq 10^{3}

题目保证,对于 80% 的数据,1\leq a\leq b\leq 10^{5}

题目保证,对于 100% 的数据,1\leq n\leq 10^{5}, 0\leq m\leq 10^{5}

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上机系统 

祝大家心想事成,一战成硕!!!❤❤❤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

京海第一深情xin

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值