PTA |1039 到底买不买 分数 20

115 阅读1分钟

PTA | 程序设计类实验辅助教学平台 (pintia.cn)

image.png

#include <iostream>
#include <string>

using namespace std;

int main() {
    string s1, s2;
    cin >> s1 >> s2;
    int m1[256] = {0}, m2[256] = {0};

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

    int count = 0;
    for (int i = 0; i < s2.size(); i++) {
        if (m1[s2[i]] > 0) {
            m1[s2[i]]--;
        } else {
            count++;
        }
    }

    if (count == 0) {
        cout << "Yes " << s1.size() - s2.size() << endl;
    } else {
        cout << "No " << count << endl;
    }

    return 0;
}

简要写法

#include <iostream>
using namespace std;
int book[256];
int main() {
    string a, b;
    cin >> a >> b;
    for (int i = 0; i < a.length(); i++)
        book[a[i]]++;
    int result = 0;
    for (int i = 0; i < b.length(); i++) {
        if (book[b[i]] > 0)
            book[b[i]]--;  //如果是小红需要的珠子,则在个数上减一,代表取走。
        else
            result++;   //记下缺乏需要的珠子个数
    }
    if(result != 0)
        printf("No %d", result);
    else
        printf("Yes %d", a.length() - b.length());
    return 0;
}