样例1
参考:【牛客网04-15第二次模拟笔试】第一题:01串消消乐
import java.util.*;
/**
* Scanner模板
*/
public class ScannerTest1 {
public static void main(String[] args) {
/*
输入:第一行输入一个正整数n,代表测试数据组数;接下来是n行测试数据,每输入一行测试数据就可以代用核心方法
比如:
2
111111
111011
*/
Scanner scanner = new Scanner(System.in);//固定写法
while (scanner.hasNext()){//固定写法
int n = scanner.nextInt(); //接受第一行的正整数
scanner.nextLine();//接收回车,否则会报错
for (int i = 0; i < n; i++) {//n行测试数据
String s = scanner.nextLine();//获取一行测试数据
ArrayList<Integer> result = coreMethod(s);//调用核心方法测试输入数据并得到返回结果
// 后续操作。。。
System.out.println(result);
}
}
scanner.close();
}
/*
写核心方法
*/
public static ArrayList<Integer> coreMethod(String s){
Integer integer = Integer.valueOf(s);
ArrayList<Integer> res = new ArrayList<>();
res.add(integer);
res.add(2);
return res;
}
}
样例2
参考:【2021-04-07华为机试】第二题:各任务执行完毕需要的时间
import java.util.*;
/**
* @create 2021-07-19 12:03
*/
public class ScannerTest2 {
public static void main(String[] args) {
/*
符号分隔,比如逗号或者“->”
输入:
1,3,4,5,8,5,3,6
0->2,2->4,2->6
*/
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String s = scanner.nextLine();//获取第一行输入
String[] s1 = s.split(",");//用,分隔返回字符串数组
int num = s1.length;
int[] arr = new int[num];
for (int i = 0; i < num; i++) {
arr[i] = Integer.parseInt(s1[i]);//将字符串数组找那个的每一个字符解析成Integer后放到int数组中
}
String d = scanner.nextLine();//获取第二行输入
String[] s2 = d.split(",");//,分隔
Map<Integer, ArrayList<Integer>> map = new HashMap<>();//建立映射关系
for (int i = 0; i < s2.length; i++) {
String[] split = s2[i].split("->");//对于每一个元素用->分隔,0->2,2->4
int from = Integer.parseInt(split[0]);//0
int end = Integer.parseInt(split[1]);//2
if(!map.containsKey(from)){
map.put(from,new ArrayList<>());
}
map.get(from).add(end);
}
//以上是处理数据,下面调用核心方法
// for(Map.Entry<Integer, ArrayList<Integer>> m : map.entrySet()){
// System.out.println("m= " + m.getValue());
// }
Integer res = coreMethod(map);//调用核心方法并得到结果
System.out.println(res);
}
scanner.close();
}
//核心方法
public static Integer coreMethod(Map<Integer, ArrayList<Integer>> map){
if (map.containsKey(map.size() - 1)){
ArrayList<Integer> list = map.get(map.size() - 1);
// System.out.println(list);
list.add(new Random().nextInt(100));
int res = list.get(list.size()-1);
return res;
}
return -1;
}
}
样例3
参考:【2021-04-07华为机试】第一题:N个小朋友分组
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.Scanner;
/**
* @create 2021-07-19 14:28
*/
public class ScannerTest3 {
public static void main(String[] args) {
/*
输入
6 //6组输入
Jack Tom
Alice John
Jessica Leonie
Tom Alice
John Jack
Leonie Jessica
输出
2
*/
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt(); //接受第一行的正整数
scanner.nextLine();//接收回车,否则会报错
//数据映射
Map<String, String> map = new HashMap<>();
//将输入放到二维数组中
String[][] arr = new String[n][2];
for (int i = 0; i < n; i++) {
String s = scanner.nextLine();
String[] s1 = s.split(" ");
map.put(s1[0],s1[1]);
//放到一个二维数组中
arr[i][0] = s1[0];
arr[i][1] = s1[1];
}
Integer res = coreMethod(map,arr);//调用核心方法
System.out.println(res);
}
scanner.close();
}
//核心方法
public static Integer coreMethod(Map<String, String> map, String[][] arr){
return new Random().nextInt(10);
}
}
样例4
import java.util.Arrays;
import java.util.Scanner;
/**
* @create 2021-07-19 14:52
*/
public class ScannerTest4 {
public static void main(String[] args) {
/*
输入格式:
每一个文件输入第一行输入一个整数T(1<=T<=1000),代表有T组测试数据。
接下来T组,每一组第一行输入一个整数n(1<n<10^5)。
接下来输入n个整数,a[i] (1<a[i]<2*n)代表序列中的每一个元素。
输入
2 //2组数据
6 //第一组有6个整数
1 2 2 2 5 6 //每个数
2 //第二组有2个整数
4 4 //每个数
输出
5 //第一组数据的输出
2 //第二组数据的输出
*/
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt(); // n组数据
scanner.nextLine();//回车
for (int i = 0; i < n; i++) {
int m = scanner.nextInt(); // m个整数
scanner.nextLine();//回车
int[] nums = new int[m];
for (int j = 0; j < m; j++) {
nums[j] = scanner.nextInt();//把输入的m个整数放入数组中,无视空格
}
Integer res = coreMethod(nums);//调用核心方法测试每一组数据
System.out.println(res);//输出
}
}
scanner.close();
}
//核心方法
public static Integer coreMethod(int[] nums){
System.out.println(Arrays.toString(nums));
return nums[nums.length - 1];
}
}
样例5
import java.util.Arrays;
import java.util.Scanner;
/**
* @create 2021-07-20 9:09
*/
public class ScannerTest5 {
public static void main(String[] args) {
/*
输入二维数组
4 // 代表4行4列
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
*/
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
int n = scanner.nextInt();//代表下面要输入n行n列的二维数组
int[][] arr = new int[n][n];//接收输入并放入到数组中
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
arr[i][j] = scanner.nextInt();
}
// scanner.nextLine();//接收回车,可以不写
}
Integer res = coreMethod(arr);//调用核心方法得到返回值
System.out.println(res);
}
scanner.close();
}
//核心方法
public static Integer coreMethod(int[][] arr){
for (int i = 0; i < arr.length; i++) {
System.out.println(Arrays.toString(arr[i]));
}
return arr[arr.length-1][0];
}
}
样例6
参考:【华为无线实习笔试题-2021-3-31场】第一题:统计足球比赛积分
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;
/**
* @create 2021-07-20 9:19
*/
public class ScannerTest6 {
public static void main(String[] args) {
/*该样例作为参考
a-b 3:0
a-c 2:1
b-a 1:1
c-a 0:1
b-c 4:3
c-b 2:2
*/
Scanner scanner = new Scanner(System.in);
List<String[]> list = new ArrayList<>();//将每一行的输入拆分后放入String[]数组中,再加入到list中
while (scanner.hasNextLine()){//这里必须是hasNextLine()
String s = scanner.nextLine();
//因为不知道要输入几行,所以空行时结束.多回车一次
if (s.isEmpty()){
break;
}
//拆分
String[] s1 = s.split(" ");//[a-b, 3:0]
String[] ab = s1[0].split("-");//[a,b]
String[] nums = s1[1].split(":");//[3,0]
//每次新建String[]数组
String[] strings = new String[4];
//将拆分后的单个字符放入到String[]数组中
strings[0] = ab[0];
strings[1] = ab[1];
strings[2] = nums[0];
strings[3] = nums[1];
//将数组添加到list中
list.add(strings);
}
scanner.close();
//处理完数据后调用核心方法
String res = coreMethod(list);
System.out.println(res);
}
public static String coreMethod(List<String[]> list){
for (String[] strings : list) {
System.out.println(Arrays.toString(strings));
}
return list.get(list.size()-1)[0];
}
}