码迷,mamicode.com
首页 > 其他好文 > 详细

PAT-BASIC-1033-旧键盘打字

时间:2015-07-14 17:52:22      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键,打出的结果文字会是怎样?

输入格式:

输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对应英文字母的坏键以大写给出;每段文字是不超过105个字符的串。可用的字符包括字母[a-z, A-Z]、数字0-9、以及下划线“_”(代表空格)、“,”、“.”、“-”、“+”(代表上档键)。题目保证第2行输入的文字串非空。

注意:如果上档键坏掉了,那么大写的英文字母无法被打出。

输出格式:

在一行中输出能够被打出的结果文字。如果没有一个字符能被打出,则输出空行。

输入样例:

7+IE.
7_This_is_a_test.

输出样例:

_hs_s_a_tst

用一个map记录坏键,,有一个测试数据点是没有坏键啊,WA了两次
技术分享
#include <bits/stdc++.h>
#define MAXN 100000+50
using namespace std;

map<char, bool> visTable;
string str;
string invalidWord;
int  main(){
    bool flag = false;
    getline(cin, invalidWord);
    int len = invalidWord.length();
    for(int i = 0; i < len; ++i){
        visTable[invalidWord[i]] = true;
    }
    cin >> str;
    len = str.length();
    for(int i = 0; i < len; ++i){
        //alpha
        if(isalpha(str[i])){
            if(isupper(str[i])){
                //A-Z
                if(!visTable[str[i]] && !visTable[+]){
                    flag = true;
                    printf("%c", str[i]);
                }
            }
            else{
                //a-z
                if(!visTable[toupper(str[i])]){
                    flag = true;
                    printf("%c", str[i]);
                }
            }
        }
        //otherwise
        else{
            if(!visTable[str[i]]){
                flag = true;
                printf("%c", str[i]);
            }
        }
    }
    if(!flag){
        printf("\n");
    }
    return 0;
}
CAPOUIS‘CODE

 

PAT-BASIC-1033-旧键盘打字

标签:

原文地址:http://www.cnblogs.com/capouis/p/4645737.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!