题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String inputLine = in.nextLine();
String rawLine = Arrays.stream(inputLine.split(" "))
.collect(Collectors.joining(""));
// 偶数
List<Character> odds = new ArrayList();
List<Character> evens = new ArrayList();
List<Character> list = rawLine.chars()
.mapToObj(o->(char)o)
.collect(Collectors.toList());
int total = list.size();
for (int i = 0; i < total; i++) {
if (i % 2 == 0) {
odds.add(list.get(i));
} else {
evens.add(list.get(i));
}
}
odds.sort(Character::compare);
evens.sort(Character::compare);
list.clear();
int j = 0;
int k = 0;
for (int i = 0; i < total; i++) {
if (i % 2 == 0) {
list.add(odds.get(j++));
} else {
list.add(evens.get(k++));
}
}
list.stream()
.map(c-> {
if ( ('0' <= c && c <= '9') || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f')) {
String bs = Integer.toBinaryString(Integer.valueOf(c.toString(), 16));
StringBuilder reversed = new StringBuilder();
for (int i = bs.length() - 1; i >= 0; i--) {
reversed.append(bs.charAt(i));
}
while(reversed.length() < 4) {
reversed.append("0");
}
int reversedValue = Integer.valueOf(reversed.toString(), 2).intValue();
if (reversedValue < 10) {
return String.valueOf(reversedValue);
}
return String.valueOf((char)('A' + reversedValue - 10));
}
return c;
})
.forEachOrdered(c-> {
System.out.print(c);
});
}
}
// 排序,合并
}
查看1道真题和解析