给定由整数组成的两个无序数组,根据顺序合并成一个数组。
输入包括两行,每行由若干个由->分隔的整数组成,分别表示以最左整数为链表头,单向指向右侧节点的链表,每行输入均以 .结尾。
输出为合并后的单向链表,由->表示其间的指针,最终指向由NULL表示的空值。
在合并过程中,比较两个链表当前待合并的第一个元素,选择其中较小的那个元素放入合并后的数组。
输入格式
输入两行字符串,每行字符串由 有符号整数、->和.组成。
输出格式
输出一行字符串,表示合并后的数组。
样例输入
1->2->3.
1->0->2.样例输出
1->1->0->2->2->3->NULL实现代码
import java.util.Scanner;
public class Main {
static StringBuilder s = new StringBuilder();
public static void main(String[] args) {
core();
}
public static void core() {
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
String s2 = sc.nextLine();
sc.close();
String[] str1 = s1.substring(0, s1.length() - 1).split("->");
String[] str2 = s2.substring(0, s2.length() - 1).split("->");
int minlength = str1.length < str2.length ? str1.length : str2.length;
int maxlength = str1.length > str2.length ? str1.length : str2.length;
for (int i = 0; i < minlength; i++) {
if (Integer.parseInt(str1[i]) < Integer.parseInt(str2[i])) {
s.append(str1[i] + "->");
s.append(str2[i] + "->");
} else {
s.append(str2[i] + "->");
s.append(str1[i] + "->");
}
}
if (minlength == maxlength) {
System.out.println(s.append("NULL"));
}else {
for(int i=minlength;i");
}else {
s.append(str2[i] + "->");
}
}
System.out.println(s.append("NULL"));
}
}
}运行结果
