[PAT-A 1084]Broken Keyboard

在这里插入图片描述
题目大意:
一块键盘上有机会键损坏了,输入一段文字时,对应的键不会显示,给出一段输入的文字和一段输出的文字,判断坏掉的键是哪几个

思路:
1)寻找那些键坏掉即找见第一个字符串中的哪些字符在第二个字符串中没有输出,字母不区分大小写,对于字母可以统一转换成大写或者小写。空格以下划线的形式给出,也需要判断。
2)保证每个字符仅输出一次,设立hash数组,HashTable[128],表示字符是否已经输出,如果HaheTable[c]==false表示c没有输出,则可以输出,如果为true,则表示不用输出。

AC代码:

//PAT_A 1084
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
	char str1[100], str2[100];
	bool HashTable[128] = { false };
	(void)scanf("%s", str1);
	(void)scanf("%s", str2);
	int len1 = strlen(str1), len2 = strlen(str2);
	for (int i = 0; i < len1; i++) {
		int j;
		char c1, c2;
		for (j = 0; j < len2; j++) {
			c1 = str1[i];
			c2 = str2[j];
			if (c1 >= 'a' && c1 <= 'z')c1 -= 32;
			if (c2 >= 'a' && c2 <= 'z')c2 -= 32;
			if (c1 == c2)break;
		}
		if (j == len2 && HashTable[c1] == false) {//第二个字符串中没有出现c1并且c1没有输出过
			printf("%c", c1);
			HashTable[c1] = true;
		}
	}
}
//PAT_A 1084
#include<iostream>
#include<map>
#include<string>
using namespace std;
map<char, bool> mp;
map<char, bool> isPrint;
char change_c(char c) {
	if (c >= 'a' && c <= 'z')return c - ('a' - 'A');
	else return c;
}
int main() {
	string str1, str2;
	getline(cin, str1);
	getline(cin, str2);
	int len1 = str1.size();
	int len2 = str2.size();
	for (int i = 0; i < len2; i++) {
		char c = change_c(str2[i]);
		if (mp.find(c) == mp.end())mp[c] = true;
	}
	for (int i = 0; i < len1; i++) {
		char c = change_c(str1[i]);
		if (mp.find(c) == mp.end()) {
			if (isPrint.find(c) == isPrint.end()) {
				isPrint[c] = true;
				cout << c;
			}
		}
	}
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值