压缩或者解压缩字符串 aaaaddcccmmm-> 4a2d3c3m
/** * 压缩或者解压缩字符串 aaaaddcccmmm-> 4a2d3c3m * 3c4f3d-> cccffffddd * @return */ 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<Character, Integer> 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<Character> 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(); }#牛友们的论文几号送审##如果你有一天可以担任公司的CEO,你会做哪三件事?##面试等了一周没回复,还有戏吗##实习要如何选择和准备?#
Java技术 文章被收录于专栏
JavaEE技术 编程开发经验 企业通用技术