栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

压缩或者解压缩字符串Java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

压缩或者解压缩字符串Java实现

代码如下:

import java.util.*;

public class JavaTest {
    public static void main(String[] args) {
        String  testStr1="aaaadadacccmcmcm";
        String zipStr = zipOrUnZipStr(testStr1);
        System.out.println(zipStr);

        String testStr2="mm3c4f3daa";
        String unzipStr = zipOrUnZipStr(testStr2);
        System.out.println(unzipStr);
    }

    
    public static String zipOrUnZipStr(String srcStr){
        if (srcStr==null || srcStr.isEmpty()){
            return "!error";
        }
        if (srcStr.length()>100){
            return "!error";
        }
        for (int i = 0; i < srcStr.length(); i++) {
            char charTemp = srcStr.charAt(i);
            if (Character.isUpperCase(charTemp)){
                return "!error";
            }
            if (!(charTemp>='a' && charTemp <= 'z' || charTemp > '2')){
                return "!error";
            }
        }

        HashMap characterCntMap = new HashMap<>();
        StringBuilder stringBuilder = new StringBuilder();
        StringBuilder stringBuilder1 = new StringBuilder();
        //mm3c4f3daa-> mmcccffffdddaa
        for (int i = 0; i < srcStr.length(); i++) {
            char charTemp = srcStr.charAt(i);
            if (Character.isDigit(charTemp) && charTemp > '2'){
                char charAt = srcStr.charAt(i + 1);
                int intCnt = Integer.parseInt(String.valueOf(charTemp));
                for (int j = 0; j < intCnt; j++) {
                    stringBuilder.append(charAt);
                }
            }else{
                if (i>0){
                    char charAt = srcStr.charAt(i - 1);
                    if (!(Character.isDigit(charAt) && charAt > '2')){
                        stringBuilder.append(charTemp);
                    }
                }else {
                    stringBuilder.append(charTemp);
                }

                if (characterCntMap.containsKey(charTemp)){
                    characterCntMap.put(charTemp,characterCntMap.get(charTemp)+1);
                }else {
                    characterCntMap.put(charTemp,1);
                }
            }
        }

        //mmmmmmmmmaaccddddfff {a=2, c=2, d=3, f=3, m=9}
        //aaaaddcaccmmm-> 4a2d3c3m
        LinkedHashSet linkedHashSet = new LinkedHashSet<>();
        for (int j = 0; j < srcStr.length(); j++) {
            char charAt = srcStr.charAt(j);
            linkedHashSet.add(charAt);
        }

        for (Character e : linkedHashSet) {
            Integer integerCnt = characterCntMap.get(e);
            if (integerCnt!=null){
                if (integerCnt>2){
                    stringBuilder1.append(integerCnt);
                    stringBuilder1.append(e);
                }else {
                    for (int i = 0; i < integerCnt; i++) {
                        stringBuilder1.append(e);
                    }
                }
            }
        }

        for (int i = 0; i < srcStr.length(); i++) {
            char charAt = srcStr.charAt(i);
            if (Character.isDigit(charAt) && charAt > '2'){
                String retUnZipStr = stringBuilder.toString();
                if (retUnZipStr.length()>100){
                    return "!error";
                }else {
                    return retUnZipStr;
                }
            }
        }

        return stringBuilder1.toString();
    }
}
总结

提示:这里只是实现顺序叠加字符串压缩压缩或者解压缩字符串 aaaaddcccmmm-> 4a2d3c3m 3c4f3d-> cccffffddd

aaadadcccmmm-> 4a2d3c3m
4a2d3c3m->aaadadcccmmm
这怎么实现呢?

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/894369.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号