PATB1033 旧键盘打字 (20 分)

一、技术总结

  1. 使用字符数组出现段错误即char str[];改成string str;后问题解决。以后尽量使用C++中的string
  2. 使用cin>>,出现答案错误,原因可能是在输入是有空格输入,导致答案错误,改成getline(cin,str);问题解决。
    详情参考:https://www.cnblogs.com/tsruixi/p/11781506.html

二、C++参考代码

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;
const int maxn = 10010;
bool hashTable[256];
int main(){
	memset(hashTable,true,sizeof(hashTable));
	string str;
	getline(cin,str);
	int len = str.length();
	for(int i = 0; i < len; i++){
		if(str[i] >= 'A' && str[i] <= 'Z'){
			str[i] = str[i] - 'A' + 'a';
		}
		hashTable[str[i]] = false;
	}
	cin >> str;
	len = str.length();
    int flag = 0;
	for(int i = 0; i < len; i++){
		if(str[i] >= 'A' && str[i] <= 'Z'){
			int low = str[i] - 'A' + 'a';
			if(hashTable[low] == true && hashTable['+'] == true){
				cout << str[i];
                flag = 1;
			}
		}else if(hashTable[str[i]] == true){
			cout << str[i];
            flag = 1;
		}
	}
	if(flag == 0) cout << endl;
	return 0;
} 
posted @ 2019-11-03 09:33  睿晞  阅读(174)  评论(0编辑  收藏  举报