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