1. 数组拼接
坑比用例
3
2
2,5,6,7,,,9,5,7
1,7,4,3,,4
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int Len = Integer.parseInt(in.nextLine());
int count = Integer.parseInt(in.nextLine());
List<List<Integer>> lists = new ArrayList<>();
List<Integer> res = new ArrayList<>();
for (int i = 0; i < count; i++) { // 堆每行进行
String[] split = in.nextLine().split("[,]+"); // 处理多逗号的情况
int tempLen = split.length; // 长度
for (int j = 0; j < tempLen && j < Len; j++) { // 收入结果中
res.add(Integer.parseInt(split[j]));
}
ArrayList<Integer> temp = new ArrayList<>();
for (int j = Len; j < split.length; j++) {
temp.add(Integer.parseInt(split[j]));
}
if (temp.size() != 0){
lists.add(temp);
}
}
int sum = 0;
for (List<Integer> list : lists) {
if (list.size() != 0){
sum++;
}
}
getResult(sum, lists, res, Len);
StringBuilder ans = new StringBuilder();
for (Integer re : res) {
ans.append(re + ",");
}
System.out.println(ans.substring(0, ans.length() - 1));
}
public static void getResult(int sum, List<List<Integer>> lists, List<Integer> res, int len){
if (sum == 0){
return;
}
for (int i = 0; i < lists.size(); i++) {
List<Integer> list = lists.get(i);
int size = list.size();
if (size == 0){
continue;
}
for (int j = 0; j < size && j < len; j++) {
res.add(list.get(j));
}
if (size <= len){
lists.set(i, new ArrayList<>());
sum--;
}else { // 比你要拿的长
for (int j = 0; j < len; j++) {
list.remove(0);
}
lists.set(i, list);
}
}
getResult(sum, lists, res, len);
}
}
使用 subList 进行优化
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int Len = Integer.parseInt(in.nextLine());
int count = Integer.parseInt(in.nextLine());
List<List<Integer>> lists = new ArrayList<>();
List<Integer> res = new ArrayList<>();
for (int i = 0; i < count; i++) { // 堆每行进行
String[] split = in.nextLine().split("[,]+");
int tempLen = split.length; // 长度
for (int j = 0; j < tempLen && j < Len; j++) { // 收入结果中
res.add(Integer.parseInt(split[j]));
}
ArrayList<Integer> temp = new ArrayList<>();
for (int j = Len; j < split.length; j++) {
temp.add(Integer.parseInt(split[j]));
}
if (temp.size() != 0){
lists.add(temp);
}
}
int sum = 0;
for (List<Integer> list : lists) {
if (list.size() != 0){
sum++;
}
}
getResult(sum, lists, res, Len);
StringBuilder ans = new StringBuilder();
for (Integer re : res) {
ans.append(re + ",");
}
System.out.println(ans.substring(0, ans.length() - 1));
}
public static void getResult(int sum, List<List<Integer>> lists, List<Integer> res, int len){
if (sum == 0){
return;
}
for (int i = 0; i < lists.size(); i++) {
List<Integer> list = lists.get(i);
int size = list.size();
if (size == 0){
continue;
}
for (int j = 0; j < size && j < len; j++) {
res.add(list.get(j));
}
if (size <= len){
list.clear();
sum--;
}else { // 比你要拿的长
list.subList(0, len).clear();
lists.set(i, list);
}
}
getResult(sum, lists, res, len);
}
}
标签:处理,res,sum,++,lists,int,字符串,size
From: https://www.cnblogs.com/aclq/p/17679668.html