PAT 甲级1050 String Subtraction 散列(字符串简单处理)

题意

给出两个字符串S1,S2,输出字符串S = S1-S2.

注意

1.S1,S2中可能包含空格,因此都要用gets(str)或者getline(cin,str).
2.若先使用scanf再使用geline,需要在getline前用getchar()读取掉回车/n

方法一:map容器

代码

#include <iostream>
#include<cstdio>
#include<map>
#include<queue>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;

typedef long long ll;
const int maxn = 100000 + 5;
map<char, int> mark;
string ori, deleteChar;


int main(){
    getline(cin, ori);
    getline(cin, deleteChar);

    for(int i = 0; i < deleteChar.size(); i++){
        char c = deleteChar[i];
        mark[c] = 1;
    }
    for(int i = 0; i < ori.size(); i++){
        char c = ori[i];
        if(mark[c]){
            continue;
        }else{
            printf("%c", c);
        }
    }

    return 0;
}

方法2:散列bool数组 vis[128]

acsii码一共128个:0~127

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值