PAT B1039 到底买不买(C++)

PAT甲级目录 | PAT乙级目录

题目描述

B1039 到底买不买

解题思路

使用 hash 数组存储提供的珠串中每种颜色出现的次数,再和想做的串的颜色进行比较,遇到一个想要的颜色,数组对应减 1 ,减到 0 以下则说明不能购买,同时记录缺少的个数。如果没有减到 0 以下,则在最后再统计一遍 hash 数组中的珠子个数。

易错点

也许陌生的知识点

  • hash 列表

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
using namespace std;
int main(){
int hashtable[256] = {0}, r = 0, l = 0;
string s1, s2;
getline(cin, s1);
getline(cin, s2);
for(int i = 0; i < s1.length(); i++){
hashtable[(int)s1[i]]++;
}
for(int i = 0; i < s2.length(); i++){
if(hashtable[(int)s2[i]] > 0) hashtable[(int)s2[i]]--;
else l++;
}
for(int i = 0; i < 256; i++) r += hashtable[i];
if(l > 0) cout << "No " << l << endl;
else cout << "Yes " << r << endl;
return 0;
}