import java.util.Scanner;
/**
* 题目:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出现的重复字母进行压缩,并输出压缩后的字符串。
* 压缩规则:
* 1、仅压缩连续重复出现的字符。比如字符串”abcbc”由于无连续重复字符,压缩后的字符串还是”abcbc”。
* 2、压缩字段的格式为”字符重复的次数+字符”。例如:字符串”xxxyyyyyyz”压缩后就成为”3x6yz”。
* */
public class Test02 {
public static void main(String[] args) {
System.out.println("请输入字符串:");
Scanner sc=new Scanner(System.in);
while (sc.hasNextLine()){
String str=sc.nextLine();
String rex =zipData(str);
System.out.println(rex);
}
}
public static String zipData(String str){
StringBuilder sb= new StringBuilder();
//字符串中第一个字符
char firstChar=str.charAt(0);
//字符数量默认为1
int count=1;
//数组下标从1开始
for(int i = 1; i < str.length(); i++){
char s=str.charAt(i);//字符串中第2个字符
if(firstChar==s){//如果第1个字符和第2个相等,数量+1
count++;
}else{//如果第1个字符和第2个字符不相等
if(count>1){//数量大于1
sb.append(count);//数量追加到StringBuilder中
sb.append(firstChar);//把第2个字符赋值给第一个字符的值追加到StringBuilder中
count=1;//重新初始化数量为1
}else{//如果第1个字符和第2个字符不相等,并且数量不大于1,把第一个字符追加到StringBuilder中
sb.append(firstChar);
}
}
firstChar=s;//把第2个字符赋值给第一个字符
}
if (count>1) {//如果数量大于1,把count追加到StringBuilder中
sb.append(count);
}
sb.append(firstChar);//最后把字符追加到StringBuilder中
return sb.toString();
}
}
---------------------
【转载,仅作分享,侵删】
作者:小志的博客
原文:https://blog.csdn.net/li1325169021/article/details/88606258
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|