压缩或者解压缩字符串 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技术 编程开发经验 企业通用技术

