PAT 乙级 1029 旧键盘 v1.0
1. 题目简述及在线测试位置
1.1 输入是两个字符串,前一个是完整字符串、后面的字符串缺失部分字符,需要找出这些缺失的字符并按顺序打印(英文字母只输出大写,缺失的字符只输出一次)
1.2 在线测试位置:PAT 1029 旧键盘
2. 基本思路
声明一个布尔型数组,缺失字符对应的ASCII码 和 布尔数组下标 一一对应,两个字符串进行逐个字符对照,当发现缺失字符时,将对应数组元素值赋值为true并打印,若数组值已经是ture 则不动作(缺失的字符只输出一次)
3. 完整AC代码
#include <iostream>
using namespace std;
#define MAX 100
int main()
{
string Origin, Typed; //完整字符串 缺失部分字符的字符串
bool JudgeArray[MAX] = { false }; //缺失字符对应的ASCII码 和 Judge数组下标 一一对应
char LostChar;
cin >> Origin >> Typed;
for (int i = 0, j = 0; i < Origin.length();)
{
if (Origin[i] == Typed[j])//未缺失
{
i++;
j++;
}
else //发现缺失
{
LostChar = Origin[i]; //字符对应的ASCII码 和 Judge数组下标 一一对应
i++; // 有字符缺失,因此将完整字符串向后移动一位
if (LostChar >= 'a' && LostChar <= 'z') //仅打印大写字母, a 97 A 65
LostChar -= 'a'-'A';
if (!JudgeArray[LostChar])
{
JudgeArray[LostChar] = true;
cout << LostChar;
}
}
}
return 0;
}