【分析】
这题难度不大,但是在做题过程中遇到一些问题。这里记录一下
- 字符大小写转换函数:单个字符可以用头里的toupper()和tolower()函数。整个字符串可以用头里的transform(str.begin(), str.end(), str.begin(), ::tolower).
- unordered_map在用迭代器遍历的时候,它的顺序并不是插入元素的顺序,因为它的原理是用hash.
【代码】
#include <cstdio>
#include <unordered_map>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
unordered_map<char, int> mp;
int main() {
string text, pattern;
cin >> text >> pattern;
//transform(text.begin(), text.end(), text.begin(), ::toupper);
//transform(pattern.begin(), pattern.end(), pattern.begin(), ::toupper);
//int i = 0, j = 0;
int alen = text.size(), blen = pattern.size();
for (int i = 0; i < alen; i++)
{
int j = 0;
for (j = 0; j < blen; j++)
{
if (toupper(text[i]) == toupper(pattern[j])) {
break;
}
}
if (j == blen && mp[toupper(text[i])] == 0) {
printf("%c", toupper(text[i]));
mp[toupper(text[i])]++;
}
}
return 0;
}