PAT-1039 到底买不买(20)(字符串的使用)

2024-06-24 11:38
文章标签 使用 字符串 到底 20 pat 1039

本文主要是介绍PAT-1039 到底买不买(20)(字符串的使用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如,YrR8RrY是小红想做的珠串;那么ppRYYGrrYBR2258可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;ppRYYGrrYB225不能买,因为没有黑色珠子,并且少了一颗红色的珠子。

输入描述:

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


输出描述:

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

输入例子:

ppRYYGrrYBR2258YrR8RrY

输出例子:

Yes 8
#include <stdio.h>
#include <string.h>typedef struct Buble{char buble_type;int buble_num;
}buble;int analysis_fun(char temp1[],buble data[],int len1)
{int i,j;int count;count = 0;for(i = 0;i < len1;i++){if(count == 0){data[count].buble_type = temp1[i];data[count].buble_num = 1;count++;}else{for(j = 0;j <= count;j++)//在筛选队列中进行比较,没有则插入{if(temp1[i] == data[j].buble_type)//筛选队列里面已经有数据了{data[j].buble_num++;break;//如果数据已经存在,直接结束循环}else//帅选队列里没有数据{if(j == count)//插入{data[count].buble_type = temp1[i];//进行插入data[count].buble_num = 1;count++;break;//插入结束,结束循环}}}}}return count;
}int main(void)
{int i,j;char temp1[1000];	char temp2[1000];	
//	char temp1[1000] = "jgawengl3ng39023onhl3nhklw34nhlwe4hj09e4wohnwelknglaw340weGBLASNRHLNR4LBNRLKENSHLKHBRNESLHKNRSELH40NLGSNGgasnlhkrnhslnbshlanr";
//	char temp2[1000] = "aglnelgkanwelgbkhenh34twlng3lnfaldngBGANBKLABNAGLBNALRNLBN";buble data[1000];	buble data2[1000];	int len1, len2; int count,count_buy,count_real,count_lack;count = 0;count_buy = 0;count_real = 0;count_lack = 0;
//	printf("----------0>\n");//scanf("%s",temp1);gets(temp1);gets(temp2);len1 = strlen(temp1);len2 = strlen(temp2);
//	printf("----------1  %d %d>\n",len1,len2);count = analysis_fun(temp1,data,len1);count_buy = analysis_fun(temp2,data2,len2);/*for(i = 0;i < len1;i++){if(count == 0){data[count].buble_type = temp1[0];data[count].buble_num = 1;count++;}else{for(j = 0;j <= count;j++)//在筛选队列中进行比较,没有则插入{if(temp1[i] == data[j].buble_type)//筛选队列里面已经有数据了{data[j].buble_num++;break;//如果数据已经存在,直接结束循环}else//帅选队列里没有数据{if(j == count)//插入{data[count].buble_type = temp1[i];//进行插入data[count].buble_num = 1;count++;break;//插入结束,结束循环}}}}}*/
//	printf("----------2>   %d\n",count);
/*	for(i = 0;i < count;i++){//	printf("  %d     %c \n",data[i].buble_num,data[i].buble_type);}printf("\n");for(i = 0;i < count_buy;i++){//	printf("  %d     %c \n",data2[i].buble_num,data2[i].buble_type);}
*/for(j = 0;j < count;j++){for(i = 0;i < count_buy;i++){if(data2[i].buble_type == data[j].buble_type)//如果元素存在{//要求打印的是缺少的个数if(data2[i].buble_num <= data[j].buble_num)//检查元素个数是否满足需求{count_real++;//满足条件的数据个数count_lack+=data2[i].buble_num;//满足则记下当前需要的元素个数}elsecount_lack+=data[j].buble_num;//注意此处与上一句的区别}elsecontinue;}}
//	printf("----------2>  %d\n",count_lack);if(count_real == count_buy)printf("Yes %d",len1 - len2);elseprintf("No %d",len2-count_lack);//
}

总结:1)本程序在复杂度上没有优势,但是其中用于分解字符串中元素的函数可以用在其他地方。

2)字符串的输入值得多加练习。

这篇关于PAT-1039 到底买不买(20)(字符串的使用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1090047

相关文章

Java实现字符串大小写转换的常用方法

《Java实现字符串大小写转换的常用方法》在Java中,字符串大小写转换是文本处理的核心操作之一,Java提供了多种灵活的方式来实现大小写转换,适用于不同场景和需求,本文将全面解析大小写转换的各种方法... 目录前言核心转换方法1.String类的基础方法2. 考虑区域设置的转换3. 字符级别的转换高级转换

使用Python将PDF表格自动提取并写入Word文档表格

《使用Python将PDF表格自动提取并写入Word文档表格》在实际办公与数据处理场景中,PDF文件里的表格往往无法直接复制到Word中,本文将介绍如何使用Python从PDF文件中提取表格数据,并将... 目录引言1. 加载 PDF 文件并准备 Word 文档2. 提取 PDF 表格并创建 Word 表格

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

Python使用Matplotlib和Seaborn绘制常用图表的技巧

《Python使用Matplotlib和Seaborn绘制常用图表的技巧》Python作为数据科学领域的明星语言,拥有强大且丰富的可视化库,其中最著名的莫过于Matplotlib和Seaborn,本篇... 目录1. 引言:数据可视化的力量2. 前置知识与环境准备2.1. 必备知识2.2. 安装所需库2.3

Python数据验证神器Pydantic库的使用和实践中的避坑指南

《Python数据验证神器Pydantic库的使用和实践中的避坑指南》Pydantic是一个用于数据验证和设置的库,可以显著简化API接口开发,文章通过一个实际案例,展示了Pydantic如何在生产环... 目录1️⃣ 崩溃时刻:当你的API接口又双叒崩了!2️⃣ 神兵天降:3行代码解决验证难题3️⃣ 深度

Linux内核定时器使用及说明

《Linux内核定时器使用及说明》文章详细介绍了Linux内核定时器的特性、核心数据结构、时间相关转换函数以及操作API,通过示例展示了如何编写和使用定时器,包括按键消抖的应用... 目录1.linux内核定时器特征2.Linux内核定时器核心数据结构3.Linux内核时间相关转换函数4.Linux内核定时

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Spring配置扩展之JavaConfig的使用小结

《Spring配置扩展之JavaConfig的使用小结》JavaConfig是Spring框架中基于纯Java代码的配置方式,用于替代传统的XML配置,通过注解(如@Bean)定义Spring容器的组... 目录JavaConfig 的概念什么是JavaConfig?为什么使用 JavaConfig?Jav

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位