![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
java编程练习
Java编程练习题解
姜小白-
Java开发,项目管理,打杂,啥都做
展开
-
牛客网|名字的漂亮度
题目信息给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。给出多个名字,计算每个名字最大可能的“漂亮度”。本题含有多组数据。输入描述整数N,后续N个名字输出描述每个名称可能的最大漂亮程度示例输入2zhangsanlisi示例输出192101题解题目中只说了名字的漂亮度,但是并未指定每个字母的漂亮原创 2021-04-28 18:11:07 · 1542 阅读 · 1 评论 -
牛客网|DNA序列
题目信息一个DNA序列由A/C/G/T四个字母的排列组合组成。G和C的比例(定义为GC-Ratio)是序列中G和C两个字母的总的出现次数除以总的字母数目(也就是序列长度)。在基因工程中,这个比例非常重要。因为高的GC-Ratio可能是基因的起始点。给定一个很长的DNA序列,以及要求的最小子序列长度,研究人员经常会需要在其中找出GC-Ratio最高的子序列。本题含有多组样例输入。输入描述输入一个string型基因序列,和int型子串的长度输出描述找出GC比例最高的子串,如果有多原创 2021-04-28 18:10:51 · 1968 阅读 · 1 评论 -
牛客网|密码验证合格程序
题目信息密码要求:1.长度超过8位2.包括大小写字母.数字.其它符号,以上四种至少三种3.不能有相同长度大于2的子串重复输入描述一组或多组长度超过2的字符串。每组占一行输出描述如果符合要求输出:OK,否则输出NG输入示例021Abc9000021Abc9Abc1021ABC9000021$bc9000输出示例OKNGNGOK题解根据题意可得到如下信息:密码长度大于8 至少包含大写字母、小写字母、数字和特殊字符至少三种 不能包原创 2021-04-22 14:10:47 · 705 阅读 · 0 评论 -
循环方式求解斐波那契数列
斐波那契数列(Fibonacci sequence)是1、1、2、3、5、8、13、21、34、55...对于斐波那契数列的第n项求解,通常是使用递归方式实现,如下 public static int fbNum(int n) { if (n==1 || n==2) return 1; else return fbNum(n-1) + fbNum(n-2); }使用递归方式计算斐波那契数时,第n项总是须要先计算出第n-1项和第n-2项,运行时间T(N)T(N-1)+T(N-2)。由于原创 2021-04-20 18:22:52 · 4335 阅读 · 0 评论 -
牛客网|输入整型数组和排序标识,对其元素按照升序或降序进行排序
题目信息输入整型数组和排序标识,对其元素按照升序或降序进行排序(一组测试用例可能会有多组数据)本题有多组输入,请使用while(cin>>)处理输入描述第一行输入数组元素个数第二行输入待排序的数组,每个数用空格隔开第三行输入一个整数0或1。0代表升序排序,1代表降序排序输出描述输出排好序的数字示例输入81 2 4 9 3 55 64 25051 2 3 4 51示例输出1 2 3 4 9 25 55 645 4 3 2 1题解原创 2021-04-19 23:36:16 · 710 阅读 · 0 评论 -
牛客网|简单错误记录
题目信息开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1、记录最多8条错误记录,循环记录,最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条,但是错误计数增加。最后一个斜杠后面的带后缀名的部分(保留最后16位)和行号完全匹配的记录才做算是”相同“的错误记录。2、超过16个字符的文件名称,只记录文件的最后有效16个字符;3、输入的文件可能带路径,记录文件名称不能带路径。4、循环记录时,只以第一次出现的顺序为准,后面重复的不会更新它的出现...原创 2021-04-16 18:14:14 · 379 阅读 · 0 评论 -
牛客网|表示数字
题目信息将一个字符中所有的整数前后加上符号“*”,其他字符保持不变。连续的数字视为一个整数。注意:本题有多组样例输入。输入描述:输入一个字符串输出描述:字符中所有出现的数字前后加上符号“*”,其他字符保持不变示例输入Jkdi234klowe90a35151示例输出Jkdi*234*klowe*90*a*3**5151*题解通过题目和输入输出描述,可以得到以下信息如果只有一个数字,前后都要加* 如果前字母,后数字,数字前加* 如果前数字,后数原创 2021-04-14 23:47:25 · 266 阅读 · 1 评论 -
牛客网|明明的随机数
题目信息明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据(用于不同的调查),希望大家能正确处理)。注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。当没有新的输入时,说明输入结束。输原创 2021-04-13 17:08:27 · 150 阅读 · 0 评论 -
分发子弹
题目信息N个士兵站成一排,教官根据每个士兵的评分分发子弹,分发规则如下每个士兵至少分一枚子弹 相邻士兵,评分高的必须获得更多子弹输入描述输入N个士兵的评分数组输出描述输出须要分发给士兵的最少的子弹数量示例输入1 0 3 2示例输出64个士兵,每个士兵评分为 1 0 3 2。每个人至少分一颗子弹,4个人须4颗子弹;相邻士兵,评分高的多分子弹,1和0相比,1多获得一颗子弹,0 3 2相比,3多获得一颗子弹。一共6颗子弹。题解按照分发规则分析每个士兵原创 2021-04-09 20:49:49 · 883 阅读 · 2 评论 -
牛客网|蛇形矩阵
题目信息蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。例如,当输入5时,应该输出的三角形为:136101525914481371211请注意本题含有多组样例输入。输入描述输入正整数N(N不大于100)输出描述输出一个N行的蛇形矩阵。题解找规律,以输入4的情况下查看。从1位置开始,先向下,然后斜着向右上方走,走到第一行,再回到最左侧,依次继续。 我们给每个位置带上行列值,基本可以得到编码的实现思路即:0,0位置向...原创 2021-04-07 22:06:55 · 733 阅读 · 1 评论 -
牛客网|成绩排序
题目信息题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩都按先录入排列在前的规则处理。注:0代表从高到低,1代表从低到高本题含有多组输入数据!输入描述输入多行,先输入要排序的人的个数,然后分别输入他们的名字和成绩,以一个空格隔开输出描述按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开示例输入30fang 90yang 50ning 70示例输出fang 90ning 70yang 50题解这个题原创 2021-04-06 21:58:43 · 351 阅读 · 0 评论 -
牛客网|整型数组合并
题目信息将两个整型数组按照升序合并,并且过滤掉重复数组元素。输出时相邻两数之间没有空格。请注意本题有多组样例。输入描述输入说明,按下列顺序输入:1 输入第一个数组的个数2 输入第一个数组的数值3 输入第二个数组的个数4 输入第二个数组的数值输出描述输出合并之后的数组示例输入31 2 54-1 0 3 2示例输出-101235题解题目信息中可以取到的主要信息两个数组 数组元素去重 排序依照取到的主要信息,可以定义list来存放原创 2021-04-05 23:24:15 · 477 阅读 · 0 评论 -
牛客网|输入n个整数,输出其中最小的k个
题目信息输入n个整数,输出其中最小的k个。本题有多组输入样例,请使用循环读入,比如while(cin>>)等方式处理输入描述:第一行输入两个整数n和k第二行输入一个整数数组输出描述:输出一个从小到大排序的整数数组示例输入:5 21 3 5 7 2示例输出:1 2题解题意很明确,给一个指定大小的数组,对数组内容排序,然后取排序后的前k个元素编码import java.io.BufferedReader;import java.原创 2021-04-05 22:46:15 · 1479 阅读 · 0 评论 -
牛客网|矩阵乘法
题目信息如果A是个x行y列的矩阵,B是个y行z列的矩阵,把A和B相乘,其结果将是另一个x行z列的矩阵C。这个矩阵的每个元素是由下面的公式决定的矩阵的大小不超过100*100输入描述:输入包含多组数据,每组数据包含:第一行包含一个正整数x,代表第一个矩阵的行数第二行包含一个正整数y,代表第一个矩阵的列数和第二个矩阵的行数第三行包含一个正整数z,代表第二个矩阵的列数之后x行,每行y个整数,代表第一个矩阵的值之后y行,每行z个整数,代表第二个矩阵的值输出描述:对于每组输原创 2021-04-04 17:06:09 · 382 阅读 · 0 评论 -
字符数字排序
题目信息输入一串字符串,包含数字、大小写字母和特殊字符。请将数字按照降序排列,字母按照升序排列。排列后,数字放在数字的位置,字母放在字母位置。示例输入:3p0i1r6w7s5n#k8^&*1示例输出:8i7k6n5p3r1s#w1^&*0题解字母排序后要放到原字母的位置,数字排序后要放到原数字的位置。操作步骤如下将输入转为字符数组 定义两个列表,接收数字和数字在原字符数组中的位置 定义两个列表,接收字母和字母在原字符数组中的位置 对数字列表和字母列表分别排序原创 2021-04-01 21:28:02 · 1521 阅读 · 0 评论 -
牛客网|两数之和
题目信息给出一个整数数组,请在数组中找出两个加起来等于目标值的数,你给出的函数twoSum 需要返回这两个数字的下标(index1,index2),需要满足index1 小于index2.。注意:下标是从1开始的假设给出的数组中只存在唯一解例如:给出的数组为 {20, 70, 110, 150},目标值为90,输出 index1=1, index2=2示例输入:[3,2,4],6示例输出:[2,3]题解这个题不难,但是有一个小陷坑,就是下标是从1开始。求两数之和,一旦一.原创 2021-03-31 21:29:56 · 304 阅读 · 0 评论 -
leetcode|有序数组的平方
题目信息给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例输入:nums = [-4,-1,0,3,10]示例输出:[0,1,9,16,100]编码import java.util.Arrays;public class SortedSquares { public int[] sortedSquares(int[] nums) { for (int i=0; i<nums.length; i++) ...原创 2021-03-29 22:10:08 · 106 阅读 · 0 评论 -
牛客网|求最小公倍数
题目信息正整数A和正整数B的最小公倍数是指能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。输入描述: 输入两个正整数A和B,两个数字之间空格隔开输出描述: 输出A和B的最小公倍数。输入示例:5 7输出示例:35题解求解最小公倍数时,须要对数字分解质因数,然后去除重复的因子,其余因子之积变为最小公倍数。如 6=2*3,8=2*2*2 ,两个数字分解质因数后,有一个因子2是重复的,去除重复的2,剩余因子之积 3*2*2*2 = 24 便为最小公倍数。..原创 2021-03-24 14:37:12 · 275 阅读 · 0 评论 -
牛客网|最小的k个数
题目信息给定一个数组,找出其中最小的K个数。例如数组元素是4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。如果K>数组的长度,那么返回一个空的数组示例输入:[4,5,1,6,2,7,3,8],4示例输出:[1,2,3,4]题解将指定数组升序排列,然后取前K个值即可编码import java.util.ArrayList;import java.util.Arrays;import java.util.List;public class原创 2021-03-23 23:05:05 · 169 阅读 · 0 评论 -
牛客网|图片整理
题目信息Lily上课时使用字母数字图片教小朋友们学习英语单词,每次都需要把这些图片按照大小(ASCII码值从小到大)排列收好。请大家给Lily帮忙,通过C语言解决。本题含有多组样例输入。输入描述:Lily使用的图片包括"A"到"Z"、"a"到"z"、"0"到"9"。输入字母或数字个数不超过1024。输出描述:Lily的所有图片按照从小到大的顺序输出输入示例:Ihave1nose2hands10fingers输出示例:0112Iaadeeefghhinnnorsssv题解题目相原创 2021-03-23 22:39:34 · 238 阅读 · 0 评论 -
字符串排序
题目信息给定n个字符串,请对n个字符串按照字典序排列。输入描述:输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。输出描述:数据输出n行,输出结果为按照字典序排列的字符串。示例输入9captocatcardtwotooupboatboot示例输出boatbootcapcardcattotootwoup编码import java.io.BufferedReader;i原创 2021-03-17 23:01:42 · 351 阅读 · 0 评论 -
牛客网|提取不重复的整数
大的思路,将输入拆解为字符数组,将字符存入有序集合中,若集合中已包含该字符,则跳过,否则字符入集合。集合可以选择ArrayList 或 Deque。基于ArrayList 和 Deque,给出两种实现方式。方法一,将输入数字逆序后,将字符存放ArrayList中,输出;方法二,将输入数字转为字符数组,利用队列先进先出特点,输出结果数字原创 2021-03-15 22:52:57 · 367 阅读 · 1 评论 -
牛客网|尼科彻斯定理
题目信息验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19输入一个正整数m(m≤100),将m的立方写成m个连续奇数之和的形式输出。题解我们把每个n的n³值和分解出来的和写出来,可以发现一些规律,即,对于每个数字n³分解后的连续奇数和中最中间的一位(n²) 或 两位(n² - 1,n² + 1),据此,推测一下n为5的情况。推测5的结果值相等,最终是要推导出一个公式出来,将29的原创 2021-03-15 07:55:40 · 547 阅读 · 1 评论 -
牛客网|求小球落地5次后所经历的路程和反弹高度
假设一个球从任意高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第5次落地时,共经历多少米?第5次反弹多高?初始高度为int型,最后的误差判断是小数点6位。如下图,初始高度为height,绿色高度为每次落地的路程,黄色背景为每次反弹的高度。5次落地的总高度为:height + height/2 + height/2 + height/4 + height/4 + height/8 + height/8 + height/16 + height/16 = 23height/8原创 2021-03-14 08:47:40 · 614 阅读 · 0 评论 -
统计每个月兔子的总数
题目信息有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?题解根据题目信息,每3个月起,每个月都生一只兔子,可以得到每个月的兔子数量列表如下根据列表信息,图中黄色背景标注的为当月较前一个月(n-1)新增的兔子数量,这个数量正好是前n-2月的兔子数量。由此,推出当月兔子数量为前两个月兔子数量之和。当月兔子数量f(n) = f(n-1) + f(n-2)编码import java.io.Buffere原创 2021-03-14 07:58:50 · 1080 阅读 · 0 评论 -
牛客网|单词倒排
单词倒排,可以利用栈先进后出的原理,对顺序处理的每个单词入栈,待所有单词处理完之后,依次出栈;亦可以对顺序处理完的单词做逆序处理,输出原创 2021-03-12 23:16:40 · 207 阅读 · 1 评论 -
检查是否存在满足条件的数字组合
题目信息输入一组数字,数字之间用空格隔开,判断输入的数字是否可以满足A=B+2C,每个元素最多只可用一次。若有满足的数字组合,依次输出A、B、C三个数字,之间用空格隔开;若无满足条件的组合,输出0。例如:输入 2 3 5 7 输出 7 3 2编码import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Arrays;import原创 2021-03-10 22:52:56 · 4383 阅读 · 3 评论 -
牛客网|求最大连续bit数
题目信息求一个byte数字对应的二进制数字中1的最大连续数,例如3的二进制为00000011,最大连续2个1本题含有多组样例输入。输入描述:输入一个byte数字输出描述:输出转成二进制之后连续1的个数示例输入:35示例输出:21说明3的二进制表示是11,最多有2个连续的1。5的二进制表示是101,最多只有1个连续的1。 编码import java.io.BufferedReader;import java.io.IOException;imp原创 2021-03-09 23:59:30 · 208 阅读 · 0 评论 -
100人报数,数到3退出游戏
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。这个题目比较经典,也被成为约瑟夫环问题,有兴趣的朋友可以去搜搜约瑟夫环。问题实现这里提供数组和list两种实现方式原创 2021-03-09 23:27:25 · 5248 阅读 · 0 评论 -
按照索引范围翻转句子单词顺序
题目信息给定一个句子,句子中每个单词之间用空格隔开,给定一个单词范围,翻转范围内单词的顺序。如给定一个句子 i am a student. 给定单词范围 1 3,翻转后结果为 i student. a am示例 输入 i am a student. 1 3 示例 输出 i student. a am题解根据题目信息,大致可以得出以下信息:须接收三个参数信息,给到程序使用 单词之间都是空格隔开的,句子给定后,须要使用split来分割单词 遍历分割后的单词,将给定范围内的单词逆转顺序编原创 2021-03-06 23:27:59 · 713 阅读 · 0 评论 -
多个数组成最大数字
小组中有多个人,每个人手中有一个卡片,卡片上是6位内的正整数,将卡片连接起来可以组成多个数字,计算可以组成的最大数字。输入描述 逗号“,” 分割的多个正整数字符串,不考虑非数字的异常情况,小组最多25人输出描述 最大的数字字符串示例 输入 22,221示例 输出 22221题解题目意思,拼接最大数字数字须要排列比较大的值须排在前面如下图示例,长度不等时,拼接值大的数字往前排,22和221组数字,22221大于22122,所以22排221前面如下图所示,长度相等时,数字值大的数字往前面原创 2021-03-06 22:47:47 · 5248 阅读 · 1 评论 -
扑克牌大小
题目里面的一些关键信息抓取牌面大小排序 10JQKA2jokerJOKER,说明题目中A比K大,2比A大基本规则1,说明两手牌都是整理好的,拿到的牌可以直接参与判断基本规则2,说明炸弹和jokerJOKER可以与各种类型比较,且类型不同时,炸弹和jokerJOKER直接胜出基本规则3,同为个子、对子、三个、炸弹、顺子时,比较牌面大小,即为比较牌中第一张牌的大小原创 2021-03-05 22:52:38 · 1034 阅读 · 0 评论 -
牛客网|统计大写字母个数
在String中找可以转换为char的方法有charAt(int index) 和 toCharArray(),分别返回字符串中指定位置的字符和一个字符数组。拿到字符后,判断其是否为大写字符,有几种判断方式:1、比较当前字符与大写字母的ASCII码值范围;2、利用Character类静态方法 isUpperCase判断;3、比较当前字符与大写字母范围,与1类似原创 2021-01-27 23:41:47 · 1300 阅读 · 0 评论 -
字符个数统计
对输入的字符串,分别统计字符串内英文字母,空格,数字和其它字符的个数。原创 2015-05-14 17:17:36 · 2657 阅读 · 0 评论 -
求100到200之间的素数
质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能整除以其他自然数(质数),换句话说就是该数除了1和它本身以外不再有其他的因数。/** * 判断100 ~ 200间素数的个数 * * @author Administrator */public class IsPrime { public static void main(String[] args) {原创 2015-04-06 22:59:36 · 4597 阅读 · 0 评论 -
用Java产生100个1-150间不重复数字
import java.util.Arrays;/** * 用Java产生100个1-150的数字 */public class RandomTest { public static void main(String[] args) { int[] resultArr = produceNum(1, 150, 100); for (Integer num : resultAr原创 2015-04-06 21:23:09 · 4335 阅读 · 1 评论 -
将数组中的字符按出现次数多少排序输出
原题一个有N个元素的集合,其中有相同元素。需要得到按重复元素多少排序的新集合。{"a","b","c","c","a","c"}得到{"c","a","b"}求算法import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java原创 2015-04-17 22:29:34 · 6564 阅读 · 0 评论 -
输出9乘9乘法口诀表并实现0-9每个数字出现的次数并打印出来
利用Java循环输出乘法口诀表,并计算出0-9每个数字出现的次数原创 2015-04-28 22:47:40 · 2633 阅读 · 0 评论 -
两个list交错拼接
两个list,[1,2,3]和[a,b,c]写个函数,将lsit连接,返回结果为:[1,a,2,b,3,c]两个list,进行for循环时,以元素少的那个为限制,进行遍历,遍历完后,将元素多个那个里面多余的元素拼接在结果集后面;若两个list长度相等,那就直接逐个拼接就可以了。原创 2015-04-24 22:20:00 · 3319 阅读 · 0 评论 -
Java分解质因数
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。原创 2015-04-29 16:59:09 · 19699 阅读 · 4 评论