PTA 1039 到底买不买 (20 分)

简介: 小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。

题目


小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。


为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。


网络异常,图片无法展示
|
图 1

输入格式:

每个输入包含 1 个测试用例。每个测试用例分别在 2 行中先后给出摊主的珠串和小红想做的珠串,两串都不超过 1000 个珠子。

输出格式:

如果可以买,则在一行中输出 Yes 以及有多少多余的珠子;如果不可以买,则在一行中输出 No 以及缺了多少珠子。其间以 1 个空格分隔。

输入样例 1:

ppRYYGrrYBR2258
YrR8RrY

输出样例 1:

Yes 8

输入样例 2:

ppRYYGrrYB225
YrR8RrY

输出样例 2:

No 2

解题思路

inputStrList = list(str(input()))
requestStrList = list(str(input()))
# inputStrList = list(str("ppRYYGrrYBR2258"))
# inputStrList = list(str("ppRYYGrrYB225"))
# requestStrList = list(str("YrR8RrY"))
inputStrSet = set(inputStrList)
requestStrSet = set(requestStrList)
inputDic = dict()
requestDic = dict()
# 统计每个字符串的keyValue
for i in inputStrSet:
    inputDic[i] = inputStrList.count(i)
for i in requestStrSet:
    requestDic[i] = requestStrList.count(i)
# print(inputDic)
duoyuCount = 0 #记录多余的珠子
qianCount = 0 #记录欠多少珠子
for key,value in inputDic.items():
    if key in requestDic:
        #如果大于0就是有多余的
        requestValue = requestDic[key]
        requestDic[key] = requestValue - value
        if value > requestValue:duoyuCount += value-requestValue #把扣除要求的数量后,多余数量记录下来
    else:
        duoyuCount += value
isSuccess = True
for key,value in requestDic.items():
    if value > 0:
        isSuccess = False
        qianCount += value
if isSuccess == True:
    print("Yes" + " " + str(duoyuCount))
else:
    print("No" + " " + str(qianCount))


目录
相关文章
|
安全 网络协议 Linux
内网穿透工具Frp
【10月更文挑战第6天】内网穿透工具Frp
1223 67
|
7月前
|
人工智能 自然语言处理 算法
文生图架构设计原来如此简单之交互流程优化
文生图创作很少是一次完成的过程,通常需要多轮迭代才能达到理想效果。多轮交互架构设计的目标是使这一迭代过程尽可能流畅和高效。
184 6
|
10月前
|
机器学习/深度学习 人工智能 监控
《在ArkTS中实现模型的可视化调试和监控:探索与实践》
在人工智能与鸿蒙Next融合的时代,ArkTS成为开发高效智能应用的焦点。本文探讨ArkTS中模型可视化调试和监控的方法,包括性能指标、模型结构、输入输出数据的可视化分析,以及利用鸿蒙系统特性实现跨设备监控,助力开发者提升模型性能和准确性,开发更智能的应用。
316 21
|
Linux 数据库
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
|
设计模式 算法 Java
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)
MATLAB实战 | APP设计
生成一个用于观察视点仰角和坐标轴着色方式对三维图形显示效果影响的App,界面如图1所示。界面右上部的列表框用于选择绘图数据、切换按钮组用于选择绘图方法,中间的旋钮用于设置视点方位角和仰角,右下部的分档旋钮用于设置坐标轴着色方式、跷板开关用于显示网格线。
723 7
MATLAB实战 | APP设计
|
存储 网络安全 iOS开发
图文详解丨 iOS App 上架全流程及审核避坑指南
图文详解丨 iOS App 上架全流程及审核避坑指南
|
SQL 存储 Java
浅析 hive udaf 的正确编写方式- 论姿势的重要性
浅析 hive udaf 的正确编写方式- 论姿势的重要性
|
机器学习/深度学习 人工智能
75岁Hinton中国大会最新演讲「通往智能的两种道路」(2)
75岁Hinton中国大会最新演讲「通往智能的两种道路」
263 0
PTA 7-2 数字之王 (20 分)
给定两个正整数 N 1 ​ <N 2 ​ 。把从 N 1 ​ 到 N 2 ​ 的每个数的各位数的立方相乘,再将结果的各位数求和,得到一批新的数字,再对这批新的数字重复上述操作,直到所有数字都是 1 位数为止
184 0