700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++

【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++

时间:2019-02-22 08:49:49

相关推荐

【PAT甲级 一个字符数组是否被另一个包含】1092 To Buy or Not to Buy (20 分) C++

题目

给两个字符串,一个是卖的,一个是想买的。

你需要统计一下,看是不是卖的包含想买的

如果包含,则YES,并输出多余的个数。如果不包含,则No,并输出缺少的个数。

思路

维护两个数组,分别是已经有的数量have[]、想要的数量want[]

数组的大小 等于面包的个数数组下标 表示面包的颜色数组中存放的数 表示面包的数量

计算差值,判断是否购买即可

题解 C++

#include<iostream>#include<string>#include<algorithm>using namespace std;int main() {int have[10 + 26 + 26] = {0 };int want[10 + 26 + 26] = {0 };string haveStr;string wantStr;cin >> haveStr >> wantStr;//统计已有for (int i = 0; i < haveStr.length(); i++) {if (haveStr[i] >= '0'&&haveStr[i] <= '9') {have[haveStr[i] - '0']++;}else if (haveStr[i] >= 'a'&&haveStr[i] <= 'z') {have[haveStr[i] - 'a' + 10]++;}else if (haveStr[i] >= 'A'&&haveStr[i] <= 'Z') {have[haveStr[i] - 'A' + 10 + 26]++;}}//统计想要for (int i = 0; i < wantStr.length(); i++) {if (wantStr[i] >= '0'&&wantStr[i] <= '9') {want[wantStr[i] - '0']++;}else if (wantStr[i] >= 'a'&&wantStr[i] <= 'z') {want[wantStr[i] - 'a' + 10]++;}else if (wantStr[i] >= 'A'&&wantStr[i] <= 'Z') {want[wantStr[i] - 'A' + 10 + 26]++;}}//计算差值int more = 0;int less = 0;bool buy = true;for (int i = 0; i < 10 + 26 + 26; i++) {if (have[i] >= want[i]) {//足够more += (have[i] - want[i]);}else {//不足less += (want[i] - have[i]);buy = false;}}//输出if (buy) {cout << "Yes " << more;}else {cout << "No " << less;}system("pause");}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。