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<