A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
奈斯,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马