PAT 乙级 1078 Java

7 篇文章 0 订阅

部分正确,三个测试点错误 ,暂未解决

import java.io.BufferedReader;
import java.io.InputStreamReader;

/**
 * 1078
 * @author quchu
 * @date 2019/10/23
 */
public class Main {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String actionStr=br.readLine();//获取操作类型
        char[] inputStr=br.readLine().toCharArray();
        StringBuffer result=new StringBuffer();//用于保存操作结果
        if(actionStr.equals("C")){
            //进行压缩操作
            for (int i = 0; i <inputStr.length-1; i++) {
                if((inputStr[i]>='A'&&inputStr[i]<='z') ||inputStr[i]==' '){
                    //进行压缩操作
                    int count=1;
                    while(i<inputStr.length-1&&inputStr[i]==inputStr[i+1]){
                        count++;
                        i++;
                    }
                    if(count>1) {
                        result.append(String.valueOf(count));
                        result.append(inputStr[i]);
                    }else{
                        result.append(inputStr[i]);
                    }
                }
               if(i==inputStr.length-2 && inputStr[i]!=inputStr[i+1]){
                   result.append(inputStr[i+1]);
                   break;
               }
            }

        }else if(actionStr.equals("D")){
            //进行解压操作,进行解析操作
            for (int i = 0; i < inputStr.length-1; i++) {
                StringBuffer tempNumStr=new StringBuffer();
                if(inputStr[i]>='0'&&inputStr[i]<='9'){
                    //是数字的情况下
                    tempNumStr.append(inputStr[i]);
                    while(i<inputStr.length-1 && inputStr[i+1]>='0'&&inputStr[i+1]<='9'){
                        tempNumStr.append(inputStr[i++]);
                    }
                    int tempNum=Integer.parseInt(tempNumStr.toString());//获取到需要循环的内容
                    for (int j = 0; j < tempNum; j++) {
                        result.append(inputStr[i+1]);//此时i+1为对应的字符
                    }
                    //循环完当前的字符,
                    i++;
                    continue;
                }else{
                    //不是数字的情况下
                    result.append(inputStr[i]);
                }
            }
        }
        System.out.println(result.toString());
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值