private static String encode_1(String in) { StringBuilder out = new StringBuilder(); int counter = 0; for (int place = 0; place < in.length(); place++) { char compare = in.charAt(place); if (in.length() > place + 1 && compare == in.charAt(place + 1)) { counter++; continue; } switch (counter) { case 0: out.append(compare); break; case 1: out.append(compare); out.append(compare); break; default: out.append(counter + 1); out.append(compare); break; } counter = 0; } return out.toString(); } private static String encode_2(String in) { String out = ""; int counter = 0; for (int place = 0; place < in.length(); place++) { char compare = in.charAt(place); if (in.length() > place + 1 && compare == in.charAt(place + 1)) { counter++; continue; } switch (counter) { case 0: out += Character.toString(compare); break; case 1: out += Character.toString(compare) + Character.toString(compare); break; default: out += Integer.toString(counter + 1) + Character.toString(compare); break; } counter = 0; } return out; }