首页 > 其他 > 详细

1084. Broken Keyboard (20)-水题

时间:2017-02-11 22:44:28      阅读:220      评论:0      收藏:0      [点我收藏+]
技术分享
#include <iostream>
#include <cstdio>
#include <string.h>
#include <algorithm>

using namespace std;
const int maxn=90;
char str1[maxn];
char str2[maxn];
int vis[37];

int main()
{
    scanf("%s %s",str1,str2);
    memset(vis,0,sizeof(vis));
    int len1=strlen(str1),len2=strlen(str2);
    for(int i=0;i<len1;i++){
        if(‘a‘<=str1[i] && str1[i]<=‘z‘){
            vis[str1[i]-‘a‘]=1;
        }
        else if(‘A‘<=str1[i] && str1[i]<=‘Z‘){
            vis[str1[i]-‘A‘]=1;  //傻了,之前写成str1[i]-‘A‘+‘a‘ ....
            str1[i]=str1[i]-‘A‘+‘a‘;//转化成小写,方便后续操作
        }
        else if(str1[i]==‘_‘){
            vis[26]=1; //‘_‘
        }
        else{
            vis[str1[i]-‘0‘+27]=1; //0~9
        }
    }
    for(int i=0;i<len2;i++){
        if(‘a‘<=str2[i] && str2[i]<=‘z‘){
            vis[str2[i]-‘a‘]=2;
        }
        else if(‘A‘<=str2[i] && str2[i]<=‘Z‘){
            vis[str2[i]-‘A‘]=2;
        }
        else if(str2[i]==‘_‘){
            //if里面一开始少写了个=。。。导致WA。。。
            vis[26]=2; //‘_‘
        }
        else{
            vis[str2[i]-‘0‘+27]=2;
        }
    }
    //要按照在str1中的顺序输出,并且是以大写字母的形式
    for(int i=0;i<len1;i++){
        if(str1[i]==‘_‘){
            if(vis[26]==1){
                printf("_");
                vis[26]=0;//输过一次就不需要再输出了
            }
        }
        else if(‘a‘<=str1[i] && str1[i]<=‘z‘){
            if(vis[str1[i]-‘a‘]==1){
                printf("%c",str1[i]-‘a‘+‘A‘);
                vis[str1[i]-‘a‘]=0;
            }
        }
        else{
            if(vis[str1[i]-‘0‘+27]==1){
                printf("%c",str1[i]);
                vis[str1[i]-‘0‘+27]=0;
            }
        }
    }
    return 0;
}
View Code

 

1084. Broken Keyboard (20)-水题

原文:http://www.cnblogs.com/chenxiwenruo/p/6390113.html

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