PAT_B_1078_Java(20分)

import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));
        char a = bf.readLine().charAt(0);
        String str = bf.readLine();

        if (Judge(a)) {
            yasuo(str);
        } else {
            jieya(str);
        }
    }

    //判断是 压缩 还是 解压缩
    public static boolean Judge(char a) {
        if (a == 'C') {
            return true;
        }
        return false;
    }

    //压缩
    public static void yasuo(String str) {
        char last = str.charAt(0);
        StringBuilder sb = new StringBuilder("");
        int index = 1;
        for (int i = 1; i < str.length(); i++) {
            char now = str.charAt(i);
            if (now == last) {
                index++;
                // 加入队列的边界一:相同且到最后
                if (i == str.length() - 1)
                    sb.append(index);
            } else {
                // 边界二:发生变化
                // 当数字是1时,只加入字符
                if (index != 1)
                    sb.append(index);
                sb.append(last);
                last = now;// 更新上一个字符
                index = 1;// 更新计数器
            }
        }
        sb.append(last);
        System.out.println(sb.toString());
    }

    //解压缩
    public static void jieya(String str) {
        int num = 0;
        StringBuilder sb = new StringBuilder("");
        for (int i = 0; i < str.length(); i++) {
            char now = str.charAt(i);
            if (now <= '9' && now >= '0') {
                // 判断是不是数字,累加
                num = num * 10 + (now - '0');
            } else {
                if (num == 0)
                    // 当num为零,既字符前没有数,只将字符加入字符串
                    sb.append(str.charAt(i));
                for (int j = 0; j < num; j++) {
                    // 循环加字符串
                    sb.append(str.charAt(i));
                }
                num = 0;
            }
        }
        System.out.println(sb.toString());
    }
}

猜你喜欢

转载自blog.csdn.net/qq_43511405/article/details/107432091
今日推荐