题解 | #字符串合并处理#
字符串合并处理
https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()){
String s = scanner.next();
String s2 = scanner.next();
s=s+s2;
// System.out.println(s);
char[] cs = s.toCharArray();
ArrayList<Character> odd = new ArrayList<>();
ArrayList<Character> even = new ArrayList<>();
String odds="";
String evens="";
for (int i = 0; i <cs.length; i++) {
if(i%2==0){
even.add(cs[i]);
evens=evens+cs[i];
}else {
odd.add(cs[i]);
odds=odds+cs[i];
}
}
char[] cbackodd = cback(odds);
char[] cbackeven = cback(evens);
int countod=0;
int countev=0;
String re="";
for (int i = 0; i <cs.length; i++) {
if(i%2==0){
re=re+cbackeven[countod];
countod++;
}else {
re=re+cbackodd[countev];
countev++;
}
}
// System.out.println(re);
String reback = Main.reback(re);
System.out.println(reback);
}
}
public static char[] cback(String str){
char[] chars= str.toCharArray();
Arrays.sort(chars);
return chars;
}
public static String reback(String str){
String[] split = str.split("");
for (int i = 0; i < split.length; i++) {
if (split[i].matches("[a-fA-F0-9]")){
int i1 = Integer.parseInt(split[i], 16);//16进制转10进制
String strer = Integer.toString(i1, 2);
int length = strer.length();
ArrayList<Integer> inte= new ArrayList<>();
inte.add(length);
if (strer.length()<5){
for (int j = 0; j <4-inte.get(0); j++) {
strer="0"+strer;
}
}
// System.out.println("未反转二进制数为"+strer);
String newer="";
for (int j = strer.length()-1; j >=0; j--) {
newer=newer+strer.charAt(j);
}
// System.out.println("反转后二进制数为"+newer);
int i2 = Integer.parseInt(newer, 2);//2进制转10进制
String string = Integer.toString(i2, 16);// 十进制整数10转成16进制
char c = string.charAt(0);
if (Character.isLowerCase(c)){
string = String.valueOf(c).toUpperCase();
}
split[i]=string;
}
}
// System.out.println("加密数组为"+Arrays.toString(split));
String success="";
for (int i = 0; i < split.length; i++) {
success=success+split[i];
}
return success;
}
}
美的集团公司福利 727人发布