首页 > 其他 > 详细

1084. Broken Keyboard (20)-水题

时间:2017-02-11 22:44:28      阅读:217      评论: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 版权所有
打开技术之扣,分享程序人生!