public static void main(String[] args) {
System.out.println(zip("aaasabbccccdddddddddddd"));
System.out.println(unzip("3asabb4cd"));
}
static String zip(String s){
int repeatTime = 1;
char beforeChar = s.charAt(0);
char currentChar = 0;
StringBuilder sb = new StringBuilder();
for(int i = 1;i<s.length();i++){
currentChar = s.charAt(i);
if(currentChar==beforeChar){
repeatTime++;
continue;
}
if(repeatTime<=2){
while(repeatTime>0){
sb.append(beforeChar);
repeatTime--;
}
}else{
sb.append(repeatTime+""+beforeChar);
}
repeatTime = 1;
beforeChar = currentChar;
}
if(repeatTime<=2){
while(repeatTime>0){
sb.append(currentChar);
repeatTime--;
}
}else{
sb.append(repeatTime+""+currentChar);
}
return sb.toString();
}
static String unzip(String s){
char c;
String digital = "0";
StringBuilder sb = new StringBuilder();
for(int i = 0;i<s.length();i++){
c = s.charAt(i);
if(c>='0'&&c<='9'){
digital+=c;
}else if(c>='a'&&c<='z'){
int d = Integer.valueOf(digital);
sb.append(c);
for(int j = 0;j<d-1;j++){
sb.append(c);
}
digital="0";
}else{
System.out.println("error!");
return null;
}
}
return sb.toString();
}