- 博客(63)
- 收藏
- 关注
原创 JAVA 存在多少组对称数
题目要求:如果一个数组nums中的两个索引 i 和 j,使得 nums [i]+nums [j]=T,并且 i 和 j 的差的绝对值至多为 K,我们称这两个数字为数组中的对称数。当前给定一个数组nums,以及两个整数T,K,问有多少组对称数?思路:通过双指针去控制下标差值不超过 K 的要求。具体代码实现如下:import java.util.Scanner;public class Main { public static void main(String[] args) {
2021-08-23 23:25:59
267
原创 JAVA 小选货架
题目要求:小选线下店最近准备新上架一批长度不等的商品, 用一个数组表示商品的长度,已知货架每一层的长度固定为X。小选线下店是一个追求生活美学的店铺,为了摆放美观,每一层至多摆放两个商品,而且商品的总长度不能比货架长度长(已知单个商品的长度都不会比货架长)。请问至少需要多少层的货架,才能漂亮的摆放这些商品呢?思路:先排序那么排在最后的一定是最大的,又因为题目说了单个商品的长度都不会比货架长,所以就会有最后一个是否能单独摆下两种情况,而不能摆下又分能不能与最小的摆在一起两种情况,即创建两个指针,从两
2021-08-23 23:09:56
369
1
原创 JAVA 分割字符串的最大得分
题目要求:给你一个由若干 0 和 1 组成的字符串s,请你计算并返回将该字符串分割成两个子字符串(即左子字符串和右子字符串, 子字符串允许为空)所能获得的最大得分。已知分割字符串的得分规则如下:左子字符串中:0得2分,1得1分右子字符串中:1得2分,0得1分子字符串为空则得0分思路:用了暴力解法,但在处理边界值的时候,因为在左子字符串中 0 得 2 分,右子字符串中 1 得 2 分,所以只要边界值是 0 就归到左边,边界值是 1 就归到右边。具体代码实现如下:import java.
2021-08-23 22:55:24
302
原创 JAVA 关键词
题目要求:小易今天读了一篇英语文章,他现在想从里面找出一个单词作为这篇文章的关键词,一个单词可以作为关键词当且仅当它在这篇文章中出现的频率不低于 1% ,现在他想知道有多少个不同的单词可以作为关键词。一个单词出现的频率%思路:要统计一个词出现的频率可以想到 HashMap 的键值对特性,用 key 去保存单词,value 去记录单词出现的次数,即:如果 Map 中没有这个单词就用 put() 方法将其 value 设为 1 存入;否则就获取此时 key 的 value,依然通过 put() 方法利
2021-08-23 22:24:34
234
原创 JAVA 小易爱回文
题目要求:小易得到了一个仅包含大小写英文字符的字符串,该字符串可能不是回文串。(“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串,“asds”就不是回文串。)小易可以在字符串尾部加入任意数量的任意字符,使其字符串变成回文串。现在请你编写一个程序,程序要能计算出小易可以得到的最短回文串。思路:首先判断这个字符串本身是否是一个回文串,如果是直接返回;如果不是,就遍历字符串,借助 StringBuilder 每次在 len 的下标上插入 str.charAt
2021-08-23 18:50:11
280
原创 网络基础知识(一)
一、网络发展史独立不联网的主机(互相不能传输共享数据)-----→网络互联(基于一种网络设备,把主机连接起来,主机之间就可以传输数据,例如:HUB集线器连接)-----→局域网LAN(基于一种网络设备,把主机连接起来)-----→广域网(处于公网上的电脑)注:局域网和网络互联不同的地方只是传输数据底层实现上有部分不同。※组网方式:①交换机;②路由器;③交换机+路由器。如图:a.b.二、协议网络数据传输,在网络经过的网络节点,都要遵循的约定和规则,最终体现为网络传输数据的格式(变...
2021-06-03 16:44:29
170
1
原创 JAVA 抄送列表
题目要求:思路:如果 s1 中不包含 ",直接用字符串截取函数通过 "," 截取即可;否则创建一个 StringBuffer对象 保存结果,用一个标志位 flag 记录遇见的 “ 个数,如果是 " flag 就加 1 ,如果是双数 (即除 2 取余为 0) 表示 "成对,此时遇到的 "," 都算分隔符,这里我采取了用 "#" 代替"," 添加到 StringBuffer对象 中的方法,单数和其他情况不做处理,按原字符存入 StringBuffer对象 中即可,然后转为字符串对象后用字符...
2021-05-27 23:03:25
287
1
原创 JAVA 剪花布条
题目要求:思路:从头开始遍历,对第一个字符串截取起始至起始加第二个字符串长度的字符串,对比子串和第二个字符串是否相等,如果相等计数变量 count 就加一并且更新循环变量 i 至后第二个字符串长度的位置上,否则 i++ 即可。具体代码如下:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanne
2021-05-25 22:01:53
214
2
原创 JAVA 字符串通配符
题目要求:思路:用两个变量做两个比较字符串的记录指针,分通配符字符串当前字符是 * 或 ? 或其他字符的情况进行考虑。代码如下:import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ S
2021-05-08 20:05:35
2065
原创 JAVA 杨辉三角的变形
题目要求:思路:用 ArrayList 储存结果,每行结果用 HashMap 保存。如果是第一二行直接返回 -1 ,否则从每个需要计算的数的正上方开始往前推 3 个相加,用的 getOrDefault() 方法,即查找 key 对应的 value ,不存在的 key 就默认加 0 ,最后遍历 list 结果集的最后一项 map ,遍历该 map ,一旦遇到偶数就输出 key 并且结束遍历。代码如下:import java.util.ArrayList;import java.ut
2021-05-06 22:14:29
300
原创 JAVA 扑克牌大小
题目要求:扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):345678910JQKA2jokerJOKER输入两手牌,两手牌之间用"-"连接,每手牌的每张牌以空格分隔,"-"两边没有空格,如:4444-jokerJOKER。请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR。基本规则:(1)输入每手牌可能是个...
2021-04-29 17:42:53
509
2
原创 JAVA 二进制插入
题目要求:思路:先用 Integer 的 toBinaryString() 方法将 m 和 n 转成二进制字符串,再通过 StringBuffer 的 reverse() 方法反转字符串好操作二进制从低位开始的 i,j 下标,同时可以调用 StringBuffer 的 replace() 方法替换 i ~j 之间的部分为 0,再替换j ~ M.length() 之间的部分为 m,最后反转转换成字符串后通过 Integer 的 parseInt() 进制转换方法返回即可。代码如下:...
2021-04-27 16:56:22
302
原创 JAVA 进制转换
要求:把一个十进制 M 数转化成 N进制且 2 <= N<= 16。思路:用一个 flag 变量记录数的正负,用 StringBuffer 类来存储结果,为了处理十以上的进制,定义一个字符串即:0123456789ABCDEF,通过 M % N 来作为输出数字字符的索引,最后逆置转字符串作为输出。具体实现代码如下:import java.util.Scanner;public class Main { public static void main(String[]..
2021-04-18 21:11:26
213
原创 Web 如何定位URL路径资源
URL 表示浏览器访问服务器的网络路径,最大长度为 2048 ,大小写敏感。例如:http://localhost:8080/web/1.htmlhttp 是一种网络传输协议,也叫超文本传输协议,是一个简单的 请求 - 相应 协议。端口号不写默认是 80。: // 是分隔符。localhost: 表示本地域名,也可是本地 IP :127.0.0.1。标识了网络主机。8080:端口号,用来绑定进程。是 Tomcat 的默认端口。/web:应用上下文路径,也是 Web 项目的文件名。
2021-04-17 20:56:05
626
原创 JAVA 能分成几个递增递减子数组
输入:6 (确定数组长度n)1 2 3 2 2 1 (输入长度为 n的数组)输出:2 (即分为[1,2,3]和[2,2,1]两个子数组)思路:用一个 flag 变量记录当前子数组的递增递减状态是什么 (这里设为 1 即递增,为 -1 即递减,为 0 则不增不减);count 为计数变量,初始值为 1 。遍历数组,假如原本子数组为递增/递减,则当突变为递减/递增后,flag 变为 0,count++;否则更改 flag 为 -1/1 。遍历完后输出 count 即可。具体实现代码.
2021-04-15 15:35:08
481
原创 JAVA 字符串中找出连续最长的数字串
题目要求:读入一个字符串str,输出字符串str中的连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串。示例:输入:abcd12345ed125ss123456789输出:123456789思路:用 end 记录最长字符串最后一位数字的下标,用 max 记录最长数字串的最大值,count 表示数字计数器,当遇到字母时重置为 0 。每次满足数字时对 max 进行判断,当 max
2021-04-15 14:44:07
1456
原创 Java 删除公共字符串
题目描述:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”输入描述:每个测试输入包含2个字符串eg:They are students.aeiou输出描述:输出删除后的字符串eg:Thy r stdnts.思路:利用Map放入将要删除的字符,然后遍历第一个字符串,如果当前字符和map中的某个字符相等就不打印这个字符,不相等就打印这个字符。具体代码
2021-04-13 17:42:17
411
原创 Java 组队竞赛问题
题目详情:牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。如样例所示:如果牛牛把6个队员划分到两个队
2021-04-13 17:27:50
428
原创 JAVA数据结构 排序
一、概念1. 排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时如果提到排序,通常指的是排升序(非降序)。通常意义上的排序,都是指的原地排序(in place sort)。2. 两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。二、七大基于比较的排序三、插入排序 把整个区间被分为有序区间和无序区间,每次选择无序区间的第一个元素,在有序区间内选择合适的位置插入。实现代码如下:...
2021-03-26 21:34:38
311
原创 JAVA数据结构 栈和队列
一、栈 (Stack) 是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在栈顶。 出栈:栈的删除操作叫做出栈。出数据在栈顶。※实现:1. 利用顺序表实现,即使用尾插 + 尾删的方式实现,复杂度是O(1);public class MyStack { private i..
2021-03-09 23:12:16
160
原创 JAVA 最短连续无序子数组
纪念一下自己在力扣上第二道能一遍提交过的题。要求:给你一个整数数组 nums ,你需要找出一个 连续子数组 ,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。请你找出符合题意的 最短 子数组,并输出它的长度。思路:先创建一个新数组存放原数组排序后的数组,再从左往右判断第一个不相等的元素并返回下标记作start,然后再从右往左判断第一个不相等的元素并返回下标end,二者作差后再加一就是答案了。具体代码如下:import java.util.Arrays;public stat
2021-01-28 16:15:09
285
原创 JAVA 压缩字符串
要求:给定一组字符,使用原地算法将其压缩。压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。具体代码如下:public class Test1_27 { public static int compress(char[] chars) { int i = 0, j, num = 0; while(i < chars.length) { .
2021-01-27 17:48:24
255
原创 JAVA 验证回文串
要求:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。思路:先通过 StringBuffer 类提取原字符串里的大小写字母和数字以此构成新的字符串,然后用 StringBuffer类 的 reverse() 方法生成另一个字符串,再用不区分大小写的 equals 方法比较这两个字符串是不是相等就可以了。具体代码如下:public class Test1_27 { public static boolean isPalindrome(String s) {
2021-01-27 16:49:09
643
原创 JAVA 在排序数组中找出给定目标值在数组中的开始位置和结束位置
要求:给定一个按照升序排列的整数数组 nums 和一个目标值 target,找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target返回[-1, -1] 。具体代码如下:import java.util.Arrays;public class Test1_26 { public static int[] searchRange(int[] nums, int target) { int[] res = new int[2]; i.
2021-01-26 18:37:24
913
原创 JAVA 字符串转换整数(atoi)
要求:实现一个myAtoi(string s)函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。算法如下:1. 读入字符串并丢弃无用的前导空格。2.检查第一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。3.读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。4.将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "..
2021-01-26 17:51:33
648
2
原创 JAVA 关于异常处理
所谓异常指的就是程序在 运行时 出现错误时通知调用者的一种机制。运行时指的是程序已经编译通过得到 class 文件了,再由 JVM 执行过程中出现的错误。而对编译错误而言,在编译过程中如果编译通过那么一定不存在编译错误。 错误在代码中是客观存在的。因此要让程序出现问题的时候及时告知程序员有两种主要的方式:1)LBYL:Look Before You Leap。即在操作之前就做充分的检查。检查完上一步之后再做下一步操作,上一步失败就不会执行下一步操作了。以进行一局游戏为例:bo...
2021-01-25 20:07:03
154
原创 JAVA 关于抽象类和接口
一、抽象类 抽象类是拥有抽象方法的类,但是他也可以拥有普通或静态的方法或属性,抽象类要使用abstract关键字声明。抽象类不能被实例化,如果用抽象类来创建实例就会编译报错。抽象类可以继承别的类也可以被别的类继承。二、抽象方法 抽象方法不需要方法体,因此没有实质的实现。抽象方法只能在抽象类和接口中存在,其存在的目的是为了让子类进行重写以便更好地反复利用,因此用 abstract 声明的方法不能用 private 修饰,这样就失去子类重写(不能访问)的意义了。三、接口 ...
2021-01-22 15:47:21
151
原创 JAVA 判断键盘输入时是否有被长按
要求:你的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。具体代码如下:public class Test1_21 { public static boolean isLongPressedName(String name, String typed) { if(name.length()...
2021-01-21 19:44:30
508
1
原创 JAVA 关于多态
一、向上转型 用一个父类的引用去指向一个子类的实例的写法就称为向上转型。(来源自用UML 图来表示类之间的关系的表示方式,因为父类通常画在子类的上方,所以我们就称为“向上转型”,表示往父类的方向转)转成父类的引用后就只能访问到父类的属性和方法了。向上转型有三种方式:①直接赋值;②方法传参;③方法返回。下面我就对这三种方法分别举个例子讲述:1)直接赋值://对于一个继承自 Animal 类的 Dog 类,可以写成:Dog dog = new Dog("小汪");Animal anim...
2021-01-21 19:20:38
117
原创 JAVA 关于继承和组合
一、继承 继承(inheritance)是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展(extends)(增加功能)产生新的类,称派生类。继承主要解决的问题是:共性的抽取。被继承的类我们称为父类、基类或超(级)类,产生的新类我们称为子(级)类,派生类。1)语法规则:class 子类 extends 父类 { }①使用 extends 继承父类;②Java 中一个子类只能继承一个父类;继承后在子类的对象中就会存在父类的数据成员...
2021-01-20 20:35:00
278
5
原创 JAVA 替换字符串中的某个部分
要求:实现方法 replace,能够替换字符串中的某个部分。具体代码如下:public class Test1_19 { public static void main(String[] args) { String str1 = "efcdef"; String str2 = "ab"; System.out.println(myReplace(str1,"ef",str2)); } public static String m
2021-01-20 00:49:13
2699
10
原创 JAVA 比较两个字符串的大小
要求:实现方法 compareTo,能够实现按照字典序比较字符串大小具体代码如下:public class Test1_19 { public static void main(String[] args) { String str1 = "abcd"; String str2 = "abd"; myCompareTo(str1,str2); } public static void myCompare
2021-01-19 23:38:02
1205
原创 JAVA 判断一个整数是否是回文数
要求:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。具体代码如下:public class Test1_19 { public static boolean isPalindrome(int x) { String str = String.valueOf(x); char[] arr = str.toCharArray(); int count = 0; int left = 0;
2021-01-19 22:52:44
3160
原创 JAVA 赎金信
要求:给定一个赎金信 (ransom) 字符串和一个杂志(magazine)字符串,判断第一个字符串 ransom 能不能由第二个字符串 magazines 里面的字符构成。如果可以构成,返回 true ;否则返回 false。(题目说明:为了不暴露赎金信字迹,要从杂志上搜索各个需要的字母,组成单词来表达意思。杂志字符串中的每个字符只能在赎金信字符串中使用一次。)具体代码及运行结果实例如下:public class Test1_19 { public static boolean ca
2021-01-19 22:32:17
523
原创 JAVA 关于String类
一、创建字符串 常见的构造 String 的方式有以下三种:// 方式一String str = "Hello";// 方式二String str2 = new String("Hello");// 方式三char[] array = {'a', 'b', 'c'};String str3 = new String(array);※注意:String 是引用类型。因此:String str1 = "Hello";String str2 = str1;的代码内存...
2021-01-19 18:20:12
160
2
原创 JAVA 关于类和对象
一、类 首先我们要先了解一下什么是类?类主要是用来对一个实体(对象)来进行描述的,主要描述该实体(对象)具有哪些属性,哪些功能。 下面我们来举个例子:class Person { public int age; //成员属性 public String name; public String sex; public void eat() { //成员方法 System.out.println("吃饭...
2021-01-18 22:43:38
144
原创 JAVA 将整型数组转成字符串
具体代码如下:public class Test1_9 { public static void main(String[] args) { int[] arr={1,2,3,4,5,6,7}; System.out.println(toString(arr)); } public static String toString(int[] arr) { String ret = "["; for (int i =
2021-01-09 17:49:44
1776
2
原创 JAVA 判断一个整型数组是否有序
具体代码如下:public class Test1_9 { public static void main(String[] args) { int[] arr={1,6,4,5,3,7,2}; int[] arr1={1,2,3,4,5,6,7}; isSorted(arr); isSorted(arr1); } public static void isSorted(int[] arr) {
2021-01-09 16:18:18
579
原创 JAVA 将一个数组的奇数排在偶数之前
要求:调整数组顺序使得奇数位于偶数之前。调整之后,不关心大小顺序。具体代码如下:public class Test1219{ public static void main(String[] args) { int []arr={1,2,3,4,5,6,7,8,9,10}; SortArr(arr);} public static void SortArr(int[] arr) { int n=arr.length; fo
2020-12-19 23:58:25
437
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人