Rebranding(灵活使用Ascall码处理字符串)

B.重塑品牌

一家小而自豪的公司的名称是 n小写英文字母。该公司已决定尝试重塑品牌–这是一种积极的营销策略,其中包括一套改变品牌的措施(无论是针对公司及其生产的商品),还是改变其组成部分:名称、标志、口号。他们决定以名字开头。

为此目的,该公司已连续雇用 m设计师们。一旦一家公司雇用了 i-TH设计师,他立即为创建一个新的公司名称做出了如下贡献:他采用了该名称的最新版本,并替换了所有的字母 x i通过 y i,还有所有的信件 y i通过 x i。这将导致新版本的出现。其中一些字母可能不会出现在字符串中。也可能发生 x i重合 y i。上一位设计师工作后收到的名称的版本成为公司的新名称。

阿卡迪经理最近在这家公司找到了一份工作,但他已经沉浸在团队精神中,并且非常担心品牌重塑的成功。当然,他迫不及待地想知道公司的新名称是什么。

满足阿卡迪的好奇心,告诉他这个名字的最终版本。

输入
输入的第一行包含两个整数。 n和 m (1≤n, m≤200 000)-初始名称的长度和雇用的设计人员数量。

第二行包括 n小写英文字母,代表公司原名。

下一个 m行包含设计器操作的描述: i-其中包含两个空格分隔的小写英文字母。 x i和 y i.

输出量
打印公司的新名称。

实例
输入
6 1
police
p m
输出量
molice
输入
11 6
abacabadaba
a b
b c
a d
e g
f a
b b
输出量
cdcbcdcfcdc

#include<iostream>
using namespace std;
int d[1000];
int main(){
	long long n,m;
	cin>>n>>m;
	string s;
	cin>>s;
	char a,b;
	while(m--){//灵活使用ascall码可以简化时间复杂度
		cin>>a>>b;
		for(int i=97;i<=122;i++){  //对于专门针对字母的题目注意灵活使用ASCALL码
			int f=0;
			if(d[i]==(int)a)d[i]=(int)b,f=1;
			if(d[i]==(int)b&&f==0)d[i]=(int)a;
			if(i==(int)a&&d[i]==0){
				d[i]=(int)b;
			}
			if(i==(int)b&&d[i]==0){
				d[i]=(int)a;
			}	
		}
	}
	for(int i=0;i<s.length();i++){
		if(d[(int)s[i]])s[i]=(char)d[(int)s[i]];
	}
	cout<<s;
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值