pat 甲级 1084 Broken Keyboard

本文通过一个具体的C++代码示例介绍了如何实现两个字符串之间的字符匹配,并去除重复字符的过程。文章详细展示了使用toupper函数进行大小写统一处理的方法,以及如何利用vector容器存储不重复的字符并最终输出这些字符。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大佬的代码超级短啊!用了string的find函数
自己写的还是略有麻烦
知识点:注意都要转换成大写字母 用函数toupper

#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>

using namespace std;

string a,b;
int arr[90],brr[90];
vector<char> str,ans,stru;

int main(){

    cin >> a >> b;
    int l = a.length();
    memset(arr,-1,sizeof(arr));
    memset(brr,-1,sizeof(brr));
    for(int i=0; i<l; i++){
    //  cout << arr[a[i]-'0'] << " " << a[i] << " " << a[i]-'0' << endl;
        a[i] = toupper(a[i]);
        if(arr[a[i]-'0'] == -1){
            str.push_back(a[i]);
            arr[a[i]-'0']++;
        }
    }

    int h = b.length();
    for(int i=0; i<h; i++){
        b[i] = toupper(b[i]);
        if(brr[b[i]-'0'] == -1){
            stru.push_back(b[i]);
            brr[b[i]-'0']++;
        }
    }

    bool key = true;
    for(int i=0; i<str.size(); i++){
        for(int j=0; j<stru.size(); j++){
            if(str[i] == stru[j]) {
                key = false;
                break;
            }
        }
        if(key) ans.push_back(str[i]);
        key = true;
    }

    for(int i=0; i<ans.size(); i++){
        cout << ans[i];
    }

    return 0;
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值