题解 | #字符串合并处理# 暴力转换
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (sc.hasNext()) {
String s1 = sc.next();
String s2 = sc.next();
//合并
char[] chs = (s1 + s2).toCharArray();
//奇数位
char[] r1 = new char[chs.length / 2];
//偶数位
char[] r2 = new char[chs.length - r1.length];
//按序添加到奇偶列表
int n = 0;//奇数
int m = 0;//偶数
for (int i = 0; i < chs.length; i++) {
if (i % 2 == 0) {
r2[m++] = chs[i];
} else {
r1[n++] = chs[i];
}
}
//排序
Arrays.sort(r1);
Arrays.sort(r2);
//重新组合
for (int i = 0, j = 0, k = 0; i < chs.length; i++) {
//如果是偶数下标,则从偶数数组中取
if (i % 2 == 0) {
chs[i] = r2[j++];
} else {
chs[i] = r1[k++];
}
}
//转换
String result = change(new String(chs));
System.out.println(result);
}
}
//字符转换
public static String change(String str) {
char[] chs = str.toCharArray();
//方法一:暴力计算,空间换时间
for (int i = 0; i < chs.length; i++) {
char c = chs[i];
if ( c == '0') {
chs[i] = '0';
} else if (c == '1') {
chs[i] = '8';
} else if (c == '2') {
chs[i] = '4';
} else if (c == '3') {
chs[i] = 'C';
} else if (c == '4') {
chs[i] = '2';
} else if (c == '5') {
chs[i] = 'A';
} else if (c == '6') {
chs[i] = '6';
} else if (c == '7') {
chs[i] = 'E';
} else if (c == '8') {
chs[i] = '1';
} else if (c == '9') {
chs[i] = '9';
} else if (c == 'a' || c == 'A') {
chs[i] = '5';
} else if (c == 'b' || c == 'B') {
chs[i] = 'D';
} else if (c == 'c' || c == 'C') {
chs[i] = '3';
} else if (c == 'd' || c == 'D') {
chs[i] = 'B';
} else if (c == 'e' || c == 'E') {
chs[i] = '7';
} else if (c == 'f' || c == 'F') {
chs[i] = 'F';
} else {
//其他值
continue;
}
}
String result = String.valueOf(chs);
return result;
}
}
查看7道真题和解析