• HDOJ 1020 Encoding


    Problem Description
    Given a string containing only ‘A’ - ‘Z’, we could encode it using the following method:

    1. Each sub-string containing k same characters should be encoded to “kX” where “X” is the only character in this sub-string.

    2. If the length of the sub-string is 1, ‘1’ should be ignored.

    Input
    The first line contains an integer N (1 <= N <= 100) which indicates the number of test cases. The next N lines contain N strings. Each string consists of only ‘A’ - ‘Z’ and the length is less than 10000.

    Output
    For each test case, output the encoded string in a line.

    Sample Input
    2
    ABC
    ABBCCC

    Sample Output
    ABC
    A2B3C

    题意:按照字符串的顺序,输出字符的个数和字符。
    如果字符出现次数为1次,只要输出原字符。
    如果输入为:ABBCCCBBB
    输出为:A2B3C3B
    而不是:A5B3C

    import java.util.Scanner;
    
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int t = sc.nextInt();
    
            while (t-- > 0) {
                String strs = sc.next();
                // System.out.println(strs+"=strs");
                boolean isSee[] = new boolean[strs.length()];
                for (int i = 1; i < isSee.length; i++) {
                    isSee[i] = false;
                }
                int sum = 0;
                boolean isLast=false;
                for (int i = 0; i < strs.length()-1; i++) {
                    if(strs.charAt(i)==strs.charAt(i+1)) {
                        isSee[i]=true;
                        isSee[i+1]=true;
                        sum=sum+1;
                    }else{
                        sum=sum+1;
                        isSee[i]=false;
                    }
    
                    if(!isSee[i]){
                        if(sum==1){
                            System.out.print(strs.charAt(i));
                        }else{
                            System.out.print(""+sum+strs.charAt(i));
                        }
                    }
    
                    if(!isSee[i]){
                        sum=0;
                    }
    
                }
    
                if(isSee[strs.length()-1]){
                    System.out.print(""+(sum+1)+strs.charAt(strs.length()-1));
                }else{
                    System.out.print(strs.charAt(strs.length()-1));
                }
                System.out.println();
            }
        }
    
    }
    
  • 相关阅读:
    HDU.5765.Bonds(DP 高维前缀和)
    SPOJ.TLE
    LOJ.2585.[APIO2018]新家(二分 线段树 堆)
    BZOJ.2679.Balanced Cow Subsets(meet in the middle)
    BZOJ.3293.[CQOI2011]分金币(思路)
    BZOJ.4558.[JLOI2016]方(计数 容斥)
    BZOJ.3631.[JLOI2014]松鼠的新家(树上差分)
    BZOJ.1568.[JSOI2008]Blue Mary开公司(李超线段树)
    BZOJ.1071.[SCOI2007]组队(思路)
    BZOJ.4910.[SDOI2017]苹果树(树形依赖背包 DP 单调队列)
  • 原文地址:https://www.cnblogs.com/webmen/p/5739366.html
Copyright © 2020-2023  润新知