#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
char t1[100],t2[100];
map<char,int> mp;
int main()
{
scanf("%s %s",t1,t2);
// int ne = 'A' - '1';
// printf("%dxxx\n",ne);
for(int i = 0;i<strlen(t2);i++)
{
if(t2[i] != '_')
{
mp[t2[i]] = 1;
}
}
for(int i = 0;i<strlen(t1);i++)
{
if(t1[i] != '_')
{
if(mp[t1[i]] == 0)
{
if(t1[i] >= 'a' && t1[i] <= 'z')
{
printf("%c",t1[i] - 32);
mp[t1[i] - 32] = 1;
mp[t1[i]] = 1;
}
else if(t1[i] >= 'A' && t1[i] <= 'Z')
{
printf("%c",t1[i]);
mp[t1[i] + 32] = 1;
mp[t1[i]] = 1;
}
else
{
printf("%c",t1[i]);
mp[t1[i]] = 1;
}
}
}
}
return 0;
}
错了一个测试点,暂时想不出问题在哪里
…
空格(也就是_)也是需要判断的
所以我一开始为什么要忽略掉下划线。。。
别把下划线忽略就对了
#include <cstdio>
#include <cstring>
#include <map>
using namespace std;
char t1[100],t2[100];
map<char,int> mp;
int main()
{
scanf("%s %s",t1,t2);
// int ne = 'A' - '1';
// printf("%dxxx\n",ne);
for(int i = 0;i<strlen(t2);i++)
{
// if(t2[i] != '_')
// {
mp[t2[i]] = 1;
// }
}
for(int i = 0;i<strlen(t1);i++)
{
// if(t1[i] != '_')
// {
if(mp[t1[i]] == 0)
{
if(t1[i] >= 'a' && t1[i] <= 'z')
{
printf("%c",t1[i] - 32);
mp[t1[i] - 32] = 1;
mp[t1[i]] = 1;
}
else if(t1[i] >= 'A' && t1[i] <= 'Z')
{
printf("%c",t1[i]);
mp[t1[i] + 32] = 1;
mp[t1[i]] = 1;
}
else
{
printf("%c",t1[i]);
mp[t1[i]] = 1;
}
// }
}
}
return 0;
}