HDOJ 1020 Encoding
Problem Description
Given a string containing only ‘A’ - ‘Z’, we could encode it using the following method:
Each sub-string containing k same characters should be encoded to “kX” where “X” is the only character in this sub-string.
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(); } }
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
文章来源: chenhx.blog.csdn.net,作者:谙忆,版权归原作者所有,如需转载,请联系作者。
原文链接:chenhx.blog.csdn.net/article/details/50943872
- 点赞
- 收藏
- 关注作者
评论(0)