PTA--GPLT练习集
文章平均质量分 51
是秃头远啊
这个作者很懒,什么都没留下…
展开
-
(Java)L1-039 古风排版
思路💡先用一个二维数组存储“古风排版”后的字符串,再遍历这个二维数组(参考代码应该不难看懂~)(本题思路不难,主要是一些细节需要注意)细节处理📏计算二维数组的列数:这里需要向上取整(可以用Math.ceil()方法实现),因为得确保二维数组可以存储得下整个字符串往二维数组里存储字符串时:由于二维数组容量可能大于字符串长度,所以遍历字符串时,可能会造成数组下标越界。因此,我们需要判断当变量index已经指向字符串末尾时,需要结束跳出循环遍历二维数组并输出时:同样由于二维数组容量可能大于原创 2022-04-22 09:40:51 · 287 阅读 · 0 评论 -
(Java)L1-023 输出GPLT (20 分)
思路💡首先对读取到的字符串使用toUpperCase()方法,将其中所有字母都转换成大写字母(因为题目中说明了不区分大小写,输出以大写形式输出)遍历字符串并分别记录其中字母G、P、L、T出现的次数循环并按照顺序输出字符串中所有的G、P、L、T这四个字母,直至这四个字母都已经输出完毕;过程中,如果某一个字母已经被输出完了,直接跳过它,继续按照G、P、L、T顺序输出即可代码import java.io.*;public class Main { public static void原创 2022-04-21 22:44:57 · 421 阅读 · 0 评论 -
(Java)L1-003 个位数统计 (15 分)
思路💡⭐简化题意:记录题目所给的整数中每个数字出现的次数,按照数字大小的升序(0 ~ 9)输出他们出现的次数⭐“记录每个数字以及它们对应的次数”,这里应该不难想到用Map以键值对的形式存储如何按照数字升序输出它们各自的出现次数呢?🤔把出现的数字用一个List存储起来,并借助Collections.sort()方法升序排列所有出现过的数字;遍历排序后的List的同时再通过Map.get()方法得到对应的出现次数,这样就可以升序输出数字及它们对应的出现次数了~当然,你不能重复存储。因此,在存储原创 2022-04-20 23:10:02 · 379 阅读 · 0 评论 -
(Java)2022GPLT热身赛 “浪漫侧影“
题目“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子,叫“右视图”;女生的侧影是从她左侧看过去的样子,叫“左视图”。520 这个日子还在打比赛的你,也就抱着一棵二叉树左看看右看看了……我们将二叉树的“侧影”定义为从一侧能看到的所有结点从上到下形成的序列。例如下图这棵二叉树,其右视图就是 { 1, 2, 3, 4, 5 },左视图就是 { 1, 6, 7, 8, 5 }。输入格式:输入第一行给出一个正整数 N (≤20),为树中的结点个数原创 2022-04-19 22:57:33 · 540 阅读 · 0 评论 -
(Java)详解 L1-054 福到了 (15 分)
💡思路💡这题主要分为两个部分倒置汉字若汉字倒置后仍然和以前一样,额外地在第一行输出bu yong dao le怎么倒置汉字?通过两个方面实现:① 将第一行放在最后一行输出、第二行放在倒数第二行输出…最后一行放在第一行输出② 对于每一行:我们要倒着输出原来的内容,同时,如果当前这个字符不是空格,我们就需要把它替换为题目中给出的字符怎么判断倒置后是不是仍然和原来保持一致呢?其实判断这个汉字是否上下对称即可✅定义两个变量分别“指向”这个汉字的第一行和最后一行字符串,通过eq原创 2022-04-18 18:22:49 · 531 阅读 · 3 评论 -
(Java)详解 L1-050 倒数第N个字符串 (15 分)
⭐这题可以把它看作是 “给出一个十进制数,将它转换为二十六进制数”💡思路💡把字母看作数字,即:a -> 0、b -> 1、c -> 2 … z -> 25,那么随意给一个由小写字母组成的字符串它都可以看作是一个二十六进制数。同时,求一个字符串本质上也就是在求一个二十六进制数(这也是本题的核心)通过第一个输入整数L,我们可以计算出L位 二十六进制数,总共可以组合出 26 ^ L 个数字题目要求倒数第N个字符串,刚刚说了,本质上是求倒数第N个二十六进制数。借助题目给出的“等原创 2022-04-18 17:26:05 · 904 阅读 · 0 评论 -
(Java)L1-043 阅览室 (20 分)
首先明确一下我们要求出的结果⭐ 每一天读者的借阅次数(一组完整的借阅记录就代表了一次借阅);⭐ 每一天所有读者的平均阅读时间(计算出每次借阅的时长再除以借阅数即可得到)思路(按照“一天”为单位计算结果)遇到当前行的键值为“S”时,先把这次借阅的书号、时间用 Map 记录下来(为了后续更方便地计算“平均阅读时间”,这里需要把时间点转换为对应的 总分钟数,比如 8:10 应该转换为 8 * 60 + 10 = 490 分钟 )遇到当前行的键值为"E"时,从 Map 中得到对应的开始时间并计算这原创 2022-04-16 20:13:51 · 586 阅读 · 1 评论 -
(Java)L1-032 Left-pad (20 分)
题意:用给出的字符,填充原字符串的开头使字符串的长度达到规定长度思路根据“规定长度”(下称count) 与 “原字符串长度”(下称sLen)这二者之间的大小关系,分情况讨论count >= sLen:这种情况相对简单,我们直接在开头填充 count - sLen个给定字符即可得到答案count < sLen:这中情况就要注意了,观察样例2可以得知,这种情况下我们的处理应该是截取原字符串末尾的count个字符代码import java.util.Scanner;public原创 2022-04-15 08:53:10 · 190 阅读 · 0 评论 -
(Java)详解 L1-006 连续因子
思路最长连续因子的个数 和 最小的连续因子序列因为我们要记录最长的连续因子序列,因此我们需要一个变量记录我们解题过程中得到的序列长度;同时,为了保证最终得到的是最长的那个,所以一旦遇到更长的序列,我们就要立刻更新这个变量的值题目中说的“最小连续序列”的意思是:在所有最长因子序列中,最小的那一个序列。确定“最小连续序列”的方法是:遍历2 ~ √n(从小到大),第一个“最长因子序列”就是“最小连续序列”。求解步骤遍历2 ~ √n 间的数字,记录遍历过程中遇到的数字的累乘值,并判断累乘值是否能被原创 2022-04-04 12:14:26 · 3033 阅读 · 6 评论 -
(Java) L1-027 出租 【自用笔记】
思路遍历电话号码字符串,同时将其中出现的数字记录下来(这里假设我们记录到了 list 这个列表中):这里可以借助一个flag数组来判断当前这个数字之前有没有出现过得到电话号码中出现过的所有数字后,对它们进行一个排序(如果用了Collections.sort()的默认排序,那么后边在输出的时候就要从后往前遍历list;当然你也可以直接让它降序排列《如何实现sort()降序排列》)因为我们还要输出电话号码中每一个数字在列表中的下标,因此我们可以用Map来存储 <数字,下标> 这个键值对,以便原创 2022-04-03 23:19:24 · 1041 阅读 · 0 评论 -
Java L1-002 打印沙漏【自用笔记】
思路计算我们能打印出的最大沙漏所用的符号个数(以下称为 “有效符号数”)根据上一步得到的 有效符号数 ,打印图案难点1. 如何计算 有效符号数?模拟人工计算过程判断题目给出的符号数是否大于 1 ?是否大于 7 ?是否大于 17 ?…以此类推,直到我们发现给出的符号数小于某个值,这时就可以得到 有效符号数了2. 如何打印图案?仔细观察不难发现,其实每行图案都是由一定的空格 + 题目给定的特殊符号构成的;想要正确打印图案,就需要确定每行空格数 、特殊符号数确定每行空格数:相邻两行相原创 2022-04-01 11:50:39 · 488 阅读 · 0 评论