蓝桥杯 历届试题 错误票据 java

tech2026-01-27  11

Prev4 历届试题 错误票据

题目如下:

这题说了一大堆,其实就是一道水题

解题思路就是从输入的字符串中把数字提取出来,然后排个序,找一下断号和重号的就行

代码如下

package prev; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Scanner; import java.util.stream.Collectors; /** * @Description: 历届试题 错误票据 * @ClassName: Prev5 * @author: fan.yang * @date: 2020/09/03 17:26 */ public class Prev5 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(),m = 0; scanner.nextLine();//这个是把上面输入n之后的回车键给获取掉 List<String> strings = new ArrayList<>(n * 100); for(int i = 0;i < n;i++){ //直接用nextLine获取一行 String str = scanner.nextLine(); //先按空格分割,然后放到集合的流中把可能分割出的空字符串去掉(题目里有说 "请注意行内和行末可能有多余的空格") //然后把得到的集合add到我们总的集合中 strings.addAll(Arrays.asList(str.trim().split(" ")).stream() .filter(e -> !"".equals(e)).collect(Collectors.toList())); } //所有数字提取完毕,转成Integer Integer[] a = new Integer[strings.size()]; strings.stream().map(e -> Integer.valueOf(e)).sorted().collect(Collectors.toList()).toArray(a); for(int i = 0;i < a.length - 1;i++){ //断号 if(a[i + 1] == a[i] + 2){ m = a[i] + 1; } //重号 //Integer不能直接a[i] == a[i + 1] 因为Integer没重写 == 号 所以比的是地址 if(a[i] == a[i + 1].intValue()){ n = a[i]; } } System.out.println(m + " " + n); } }
最新回复(0)