1、问题描述
通过键盘输入一串大写字母(A~Z)组成的字符串。请编写一个字符串压缩程序,将字符串连续出现的重复字母进行压缩,并输出压缩后的字符串。
2、基本要求:
(1)仅压缩连续重复出现的字符。比如字符串“ABCBC”由于无连续重复字符,压缩后的字符串还是“ABCBC”。
(2)压缩字段的格式为“字符重复的次数+字符”。例如:字符串“XXXYYYYYYZ”压缩后就成为“3X6YZ”。
3、设计思路:
利用循环嵌套,外循环遍历字符串,内循环检测有多少个字母是相同的数。
如:字符串XXXYYYYYYZZZ,外循环循环变量i,内循环循环变量j,当i =
0时,第一次进入内循环,使j从i的下一位开始检测字符串,如果Str[i]与Str[j]相
同时,计数变量增加。直到Str[i]与Str[j]不相同,直接输出计数变量和字符Str[i],
并将此时的j赋值给变量i,跳过已经遍历过的字符片段。直到将整个字符串遍历完成。
4、源代码:
package cn.test.termtest.uglynumber; import java.util.Scanner; public class Dupletter { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc=new Scanner(System.in); String inStr=sc.next(); //固定不变的 StringBuffer outStr=new StringBuffer(""); //需要修改的 char preChar = inStr.charAt(0); char curChar; int count=1; for(int i=1;i<inStr.length();i++) { curChar=inStr.charAt(i); if(curChar!=preChar) { outStr.append(count); outStr.append(preChar); count=1; preChar=curChar; }else count ++; } outStr.append(count); outStr.append(preChar); System.out.println(outStr); } }
5、运行结果:
(1)输入XYZASDAS
(2)输入XXXYYYYYYZZZ