列表

详情


NC14708. 小猪佩奇练打字

描述

猪妈妈让佩奇练习打字, 她给了佩奇一篇只有小写字母的字符串S ( 1 <= |S| <= 105)。 但是佩奇记不住键盘字母的位置,只能看着键盘一个一个打。淘气的乔治趁佩奇不注意, 偷偷的换了键盘按键的位置。 乔治是这样操作的:乔治每次扣下来两个键帽, 并且将这两个键帽互换位置重新安回去, 乔治越玩越起劲,一直重复了m(1 <= m <= 105)次。请输出佩奇打完字后屏幕上显示的实际字符串。

输入描述

第一行输入一个字符串S ( 1 <= |S| <= 105);
第二行输入一个数字m(1 <= m <= 105), 表示佩奇要操作m次。
之后有m行, 每行有两个字母 c1, c2 表示佩奇要把这两个键帽互换位置。

输出描述

输出一行字符串, 即佩奇用乔治玩坏的键盘输出的实际字符串。

示例1

输入:

helloworld
3
e o
h z
l p

输出:

zoppewerpd

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 20ms, 内存消耗: 696K, 提交时间: 2023-04-21 16:40:22

#include<bits/stdc++.h>
using namespace std;
int w[26];
string str;
signed main()
{
    cin>>str;
    for(int i=0;i<26;i++)w[i]=i;
    int m;
    cin>>m;
    while(m--)
    {
        char c,p;
        cin>>c>>p;
        swap(w[c-'a'],w[p-'a']);
    }
    for(int i=0;i<str.size();i++)cout<<char('a'+w[str[i]-'a']);
}

C++14(g++5.4) 解法, 执行用时: 43ms, 内存消耗: 1244K, 提交时间: 2020-06-27 18:23:31

#include<bits/stdc++.h>
using namespace std;
map<char,char>mp;
int main()
{
	string a;
	char x,y,s;
	int n,i;
	cin>>a>>n;
	for(i='a';i<='z';i++)
		mp[i]=i;
	for(i=1;i<=n;i++)
	{
		cin>>x>>y;
		s=mp[x];
		mp[x]=mp[y];
		mp[y]=s;
	}
	n=a.size();
	for(i=0;i<n;i++)
		printf("%c",mp[a[i]]);
}

C++(clang++11) 解法, 执行用时: 18ms, 内存消耗: 656K, 提交时间: 2022-04-04 23:06:49

#include<bits/stdc++.h>
using namespace std;
int main(){
	string s;
	int m;cin>>s>>m;
	char mp[26];
	for (int i=0;i<26;i++)mp[i]=i+'a';
	while(m--){
		char a,b;cin>>a>>b;
		swap(mp[a-'a'],mp[b-'a']);
	}
	for (char i:s)
		cout<<mp[i-'a'];
	cout<<endl;
}

Python3 解法, 执行用时: 397ms, 内存消耗: 5972K, 提交时间: 2023-05-29 09:39:17

d={}
for x in 'qazxswedcvfrtgbnhyujmkiolp':
    d[x]=x
s=input()
for _ in range(int(input())):
    a,b=input().split()
    d[a],d[b]=d[b],d[a]
t=''
for x in s:
    t+=d[x]
print(t)

上一题