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,再继续寻找



京公网安备 11010502036488号