c 题解 1029 旧键盘 (20 分)
原题
https://pintia.cn/problem-sets/994805260223102976/problems/994805292322111488
代码
#include
#include
using namespace std;
char shouldget[81];
char trulyget[81];
int result[127] = {0};//对应的ASCII码表
int main()
{
scanf("%s", shouldget);
getchar();
scanf("%s", trulyget);
for (int i = 0; i < strlen(shouldget); i++)
{
result[(int)shouldget[i]] = 1;//把字符存储为数组索引并计数
}
for (int i = 0; i < strlen(trulyget); i++)
{
result[(int)trulyget[i]]++;
}
for (int i = 0; i < strlen(shouldget); i++)
{
int num = (int)shouldget[i];
if (result[num] == 1)//把字符只出现一次的输出
{
if (num >= 'A' && num <= 'Z')
{
cout << (char)num;
result[num + 32] = 0;//把对应的小写置为0
}
else if (num >= 'a')
{
cout << (char)(num - 32);
result[num - 32] = 0;//把对应的大写置为0
}
else
{
cout << (char)num;
}
result[num] = 0;//避免重复输出
}
}
return 0;
}
同样的思路,别人的博客https://blog.csdn.net/shiliang97/article/details/100085619
#include
using namespace std;
int s3[256];
int main(){
string s,s2;
cin>>s>>s2;
for(int i=0;i='a'&&s2[i]<='z'){//转换成大写字母
s2[i]+='A'-'a';
}
s3[s2[i]]=1;
}
for(int i=0;i='a'&&s[i]<='z'){//转换成大写字母
s[i]+='A'-'a';
}
if(s3[s[i]]!=1){//在真实输出里,找不到就输出
cout<