HDOJ 1020 Encoding

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

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();
        }
    }

}
目录
相关文章
|
2月前
|
Java 数据库连接 mybatis
成功解决:Invalid encoding name “UTF8“
这篇文章解释了如何解决MyBatis配置文件中由于编码格式错误导致的"Invalid encoding name 'UTF8'"问题,即将`encoding="UTF8"`更正为`encoding="UTF-8"`。
成功解决:Invalid encoding name “UTF8“
|
12月前
hdoj 4572 Bottles Arrangement
虽然不知道怎么做,但是AC还是没有问题的。 大概就是循环n次,从m加到m-n/2 除了最后一个数,每个都加两次。
35 0
|
12月前
hdoj 2089 不要62
这题数据量相对比较小,可以暴力打表解决。不过我这里用数位dp 刚开始学数位dp,参考了别人的代码。
48 0
HDOJ 1020 Encoding
HDOJ 1020 Encoding
82 0
HDOJ1020 Encoding
HDOJ1020 Encoding
89 0
|
机器学习/深度学习
HDOJ 1390 Binary Numbers(进制问题)
HDOJ 1390 Binary Numbers(进制问题)
112 0
HDOJ 1214 圆桌会议
HDOJ 1214 圆桌会议
94 0
|
机器学习/深度学习
HDOJ 2074 叠筐
HDOJ 2074 叠筐
113 0
|
网络协议 机器学习/深度学习