您的位置:首页 > 其它

1084. Broken Keyboard (20)-水题

2017-02-11 22:20 260 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: