coding-对字符串进行RLE压缩

复制代码
package com.study.tencet;

import java.util.Scanner;

/**
 * @author zhangpba
 * @description 对字符串进行RLE压缩
 * @date 2023/2/20
 */
public class RLE {

    /**
     * 1. 题目描述
     * 对字符串进行RLE压缩,将相邻的相同字符,用计数值和字符值来代替。例如:aaabccccccddeee,则可用3a1b6c2d3e来代替。
     * <p>
     * 输入描述:
     * 输入为a-z,A-Z的字符串,且字符串不为空,如aaabccccccddeee
     * 输出描述:
     * 压缩后的字符串,如3a1b6c2d3e
     *
     * @param args
     */
    public static void main(String[] args) {
//        String info = "aaabccccccddeee";
        Scanner scanner = new Scanner(System.in);
        String info = scanner.nextLine();
        System.out.println(rle(info));
    }


    private static String rle(String info) {
        // 先进行判空
        if (info == null || info.isEmpty()) {
            return info;
        }
        StringBuffer buffer = new StringBuffer();

        // 初始化第一字母
        char chushi = info.charAt(0);
        // 初始化第一个字母的个数
        int count = 0;
        for (int i = 0; i < info.length(); i++) {
            if (chushi == info.charAt(i)) {
                // 当初始化的字母跟下一个字母一致的时候,给当前字母个数+1
                count++;
            } else {
                // 当初始化的字母跟下一个字母不一致的时候,拼接上一个字母和其个数
                // 上一个字母的个数
                buffer.append(count);
                // 上一个字母
                buffer.append(info.charAt(i - 1));
                // 初始化下一个字母的
                chushi = info.charAt(i);
                // 初始化下一个字母的个数
                count = 1;
            }
        }
        // 最后一个字母的数量
        buffer.append(count);
        // 最后一个字母
        buffer.append(chushi);
        return buffer.toString();
    }
}
复制代码

 

posted @   zhangpba  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示