【牛客網】字符串合併處理

自己沒有仔細讀題目,如果是這些字符就一頓操作。
意味着不是這些字符,就不操作…以後要認真讀題。

在這裏插入圖片描述在這裏插入圖片描述



import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            String s1 = in.next();// 獲取第一個字符串
            String s2 = in.next();// 獲取第二個字符串
            String str = s1 + s2;// 合併
            char[] arr1 = new char[str.length() - str.length() / 2];//存貯奇數的字符
            char[] arr2 = new char[str.length() / 2];// 存儲偶數的字符
            int count1 = 0;
            int count2 = 0;

            for (int i = 0; i < str.length(); i++) {
                if (i % 2 == 0) {
                    arr1[count1] = str.charAt(i);
                    count1++;
                } else {
                    arr2[count2] = str.charAt(i);
                    count2++;
                }
            }
            Arrays.sort(arr1);// 分別排序
            Arrays.sort(arr2);
            count1 = 0;
            count2 = 0;
            StringBuffer sb = new StringBuffer();
            for (int i = 0; i < str.length(); i++) {
                if (i % 2 == 0) {
                    sb.append(arr1[count1]);
                    count1++;
                } else {
                    sb.append(arr2[count2]);
                    count2++;
                }
            }
            String s = sb.toString(); // 得到了分組排序後的字符串。

            StringBuffer stringBuffer = new StringBuffer();

            for (int i = 0; i < s.length(); i++) {
                char c = s.charAt(i);
                int num = 0;
                if (c >= '0' && c <= '9') {
                    num = c - 48;
                } else if (c >= 'a' && c <= 'f') {
                    num = c - 87;
                } else if (c >= 'A' && c <= 'F') {
                    num = c - 55;
                }else {
                    stringBuffer.append(c);
                    continue;
                }
                String s3 = Integer.toBinaryString(num);
                int zero = 4 - s3.length();
                for (int j = 0; j < zero; j++) {
                    s3 = "0" + s3;
                }
                // 已經轉換成二進制了。
                int res = 0;
                for (int j = 0; j < 4; j++) {
                    char c1 = s3.charAt(j);
                    if (c1 == '1')
                        res += (int) Math.pow(2, j);
                }
                // 得到了轉換後的數字res
                if (res >= 10) {
                    char cc = (char) (res + 55);
                    stringBuffer.append(cc);
                } else {
                    stringBuffer.append(res);
                }
            }
            System.out.println(stringBuffer.toString());

        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章