一.题目描述
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。
输入格式:
输入在 2 行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过 80 个字符的串,由字母 A-Z(包括大、小写)、数字 0-9、以及下划线 _
(代表空格)组成。题目保证 2 个字符串均非空。
二.题解
对原字符串循环遍历,每当发现有缺少的字符时,就先判断是否已经判断过,若没有,就将该字符存入新的字符串中,最后输出存储的字符即可。
三.代码
#include <bits/stdc++.h>
using namespace std;
int main()
{
char a[81], b[81], c[81];
int i = 0, j = 0;
int n = 0, k;
cin >> a >> b;
while ((unsigned) i < strlen(a))
{
if (a[i] == b[j])
i++, j++;
else
{
//判断是否存储过该字符
for (k = 0; k < n; k++)
if (c[k] == a[i] || (c[k] == a[i] - 32))
break;
//若没有,则加入
if (k == n)
{
if (a[i] >= 'a' && a[i] <= 'z')
c[n] = a[i] - 32;
else
c[n] = a[i];
n++;
}
i++;
}
}
for (int i = 0; i < n; i++)
cout << c[i];
}