星空's Blog
星空's Blog
PAT-A1092 To Buy or Not to Buy

原题

To Buy or Not to Buy (20 分)

题解

看着挺吓人,实际上很简单
大意是比较两个字符串的内容,由于限定了范围[0-9][a-z][A-Z],
这里构造一个平衡数组,数组长度为[‘Z’ + 1],实际上这么写比较浪费空间,但是可以简化后续的操作,就这么写吧。
输入分为2个字符串,supply和demand
扫描supply,对平衡数组ASCII下标对应的数值++
扫描demand,对平衡数组ASCII下标对应的数值–
扫描平衡数组,计算所有小于0的颜色的数值和作为偏移
如果偏移小于0,说明供不应求,偏移的绝对值就是miss number
如果偏移为0,说明供过于求或正好相等,extra number 为2字符串的长度差

代码

#include <iostream>
#include <string>
using namespace std;

int main(void) {
    string supply,demand;
    cin >> supply;
    cin >> demand;

    int t['z' + 1] = {0};
    for (int i = 0;i < supply.length();i++) {
        t[supply[i]]++;
    }
    for (int i = 0;i < demand.length();i++) {
        t[demand[i]]--;
    }
    int miss = 0;
    for (int i = 0;i < 'z' + 1;i++) {
        if (t[i] < 0) {
            miss += t[i];
        }
    }
    if (miss) {
        cout << "No" << " " << -miss << endl;
    } else {
        cout << "Yes" << " " << supply.length() - demand.length() << endl;
    }
    return 0;
}
所有文章禁止转载。
代码仅供参考
为了对抗广告机器人,首次留言将会被审核
首页      算法学习      PAT-A      PAT-A1092 To Buy or Not to Buy

星空

文章作者

发表评论

textsms
account_circle
email

星空's Blog

PAT-A1092 To Buy or Not to Buy
原题 To Buy or Not to Buy (20 分) 题解 看着挺吓人,实际上很简单 大意是比较两个字符串的内容,由于限定了范围[0-9][a-z][A-Z], 这里构造一个平衡数组,数组长度为['Z' + 1],实际上…
扫描二维码继续阅读
2019-08-28