首页 > 其他 > 详细

B - Keyboard Layouts

时间:2020-05-08 22:18:39      阅读:41      评论:0      收藏:0      [点我收藏+]

传送门

 

题意:

给定三个字符串,分别为s1,s2,s。其中s1,s2都是包含了26个英文字母的字符串,都是代表了不同的键盘布局。s通过s1的键盘打出来的,现在让你输出相同操作下使用键位为s2的键盘打印出来的s。

思路:

首先先用map来存一下 s1和s2的关系,然后遍历字符串s :

1、如果s[i]为小写字母,直接通过map转换

2、如果s[i]为大写字母,先转换小写字母,执行1步骤

3、如果s[i]不是字母,不用变换。

 

代码:

#include <iostream>
#include <cstdio>
#include <map>
#include <cstring>
using namespace std;
string s,s1,s2;
map<char,char>mp;

int main(){
    cin>>s1>>s2>>s;
    for (int i=0; i<26; i++) mp[s1[i]]=s2[i];
    for (int i=0; i<s.length(); i++) {
        char c=s[i];
        if (c>=‘a‘&&c<=‘z‘) s[i]=mp[c];
        else if(c>=‘A‘&&c<=‘Z‘){
            c+=‘a‘-‘A‘;
            c=mp[c];
            s[i]=c-‘a‘+‘A‘;
        }
    }
    cout<<s<<endl;
}

 

B - Keyboard Layouts

原文:https://www.cnblogs.com/yishuda/p/12853206.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!