1033 旧键盘打字
Posted CSU迦叶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1033 旧键盘打字相关的知识,希望对你有一定的参考价值。
1. 非常奇怪,明明都说了用下划线替代空格,但是用scanf读入的时候就会有1个测试点没通过,换成cin.getline就通过了
2.3种情况下对应的哈希表赋值为true。1是上来就赋值,2是对于大写字母把对应小写字母也赋值,这里注意直接在字符上+32,3是上档键坏了,下标从65~90都要赋值。
AC代码如下
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
using namespace std;
const int maxn = 100010;
const double eps = 1e-3;
int main(){
// 7+IE.
// 7_This_is_a_test.
// _hs_s_a_tst
char brokenStr[maxn];
char outputStr[maxn];
// scanf("%s %s",brokenStr,outputStr);
cin.getline(brokenStr,maxn);
cin.getline(outputStr,maxn);
bool brokenTable[128] = {false};
int brokenLen = strlen(brokenStr);
for(int i=0;i<brokenLen;i++){
char nowCh = brokenStr[i];
brokenTable[nowCh] = true;
if(nowCh>='A' && nowCh<='Z')//大写字母的对应小写字母也无法输出
brokenTable[nowCh+32] = true;
if(nowCh == '+'){//上档键坏了,所有大写字母都无法输出
for(int j=65;j<91;j++)
brokenTable[j] = true;
}
}
bool isEmpty = true;
int outputLen = strlen(outputStr);
for(int i=0;i<outputLen;i++){
char nowCh = outputStr[i];
if(!brokenTable[nowCh]){
printf("%c",nowCh);
isEmpty = false;
}
}
if(isEmpty)printf("\\n");
return 0;
}
以上是关于1033 旧键盘打字的主要内容,如果未能解决你的问题,请参考以下文章