/**
* 压缩或者解压缩字符串 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
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
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
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
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
stringBuilder1.append(e)
}
}
}
}
for (int i = 0
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()
}