PAT 1092. To Buy or Not to Buy (20)

本文介绍了一个字符串匹配算法的应用实例,通过C++实现,演示了如何从一个字符串中移除另一个字符串的所有字符,最后输出是否成功匹配及剩余字符数量。该算法使用了标准C++库中的map容器来统计目标字符串中各字符出现的次数。
#include<stdio.h>
#include<string.h>
#include<map>
#define SIZE 1005
using namespace std;
char sell[SIZE], want[SIZE];
map<char, int>m;
int main(){
    freopen("1.in", "r", stdin);
    scanf("%s", sell);
    scanf("%s", want);
    int i;
    for (i = 0; i < strlen(want); i++)
        m[want[i]]++;
    for (i = 0; i < strlen(sell); i++)
        if (m[sell[i]]>0)
            m[sell[i]]--;
    map<char, int>::iterator it;
    int count = 0;
    for (it = m.begin(); it != m.end(); it++)
        if (it->second>0)
            count += it->second;
    if (count == 0)
        printf("Yes %d\n", strlen(sell) - strlen(want));
    else printf("No %d\n", count);
    return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值