PAT (Basic Level) 1033 旧键盘打字 (20 point(s))

#include <bits/stdc++.h>
using namespace std;

int main() {
	string bad, good;
	getline(cin, bad); 
	getline(cin, good);
	for(int i = 0; i < good.size(); i++){
		if(bad.find(toupper(good[i])) == string :: npos &&
		(bad.find(‘+‘) == string :: npos || isupper(good[i]) == false))
		cout << good[i];
	} 
}

原来是想读取坏键,以此来删除实际输入里面的坏键的字符。但参考了别人的之后发现有点麻烦,所以改成判断是否是坏键,如果不是则输出的方式。

上档键可以分四种情况,而只有一种情况是需要跳过的,也就是当存在上档键并且存在大写字母的时候。而其他三种情况都可以直接输出。所以将上面的且的关系反过来,那就可以得到下面上档键的判断代码。

mp.find(‘+‘) == mp.end() || isupper(good[i]) == false

参考代码1

参考代码2

string::npos

PAT (Basic Level) 1033 旧键盘打字 (20 point(s))

上一篇:正则表达式


下一篇:使用LayerView.effect进行点的高亮显示