import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param param string字符串 * @return string字符串 */ public String compressString (String param) { // 压缩的数字 int num = 1; char[] array = param.toCharArray(); // 字符长度 int length = array.length; // 快指针 char faster; // 慢指针 char slower; // 压缩后的字符串存储 StringBuffer sb = new StringBuffer(); for (int i = 0; i < length; i++) { slower = array[i]; boolean isAppend = false; if ((i + 1) < length) { faster = array[i + 1]; if (slower == faster) { num = num + 1; } else { isAppend = true; } } else { isAppend = true; } if (isAppend) { sb.append("" + slower); if (num > 1) { sb.append(num); } num = 1; } } return sb.toString(); } }
利用快慢指针处理,两两相比,直到遇到不一样时,将慢指针的数据存储String里,并判断相同时数字自增是否大于1,大于就拼接,然后继续将num数字置为1,再继续寻找