将一串字符数组 ‘a’, ‘a’, ‘b’, ‘b’, ‘b’, ‘b’, ‘a’, ‘b’, ‘a’, ‘b’, ‘b’, ‘a’
压缩整理成 a2b4abab2a 字符+它出现的次数
public static void main(String[] args) {
char chars[] = { 'a', 'a', 'b', 'b', 'b', 'b', 'a', 'b', 'a', 'b', 'b', 'a' };
// 将第一个字符存放到一个变量中pre,且默认出现的次数为1
char pre = chars[0];
int count = 1;
// 用于拼接字符
StringBuilder sb = new StringBuilder();
// 遍历剩余的字符
for (int i = 1; i < chars.length; i++) {
// 获取当前字符
char current = chars[i];
// 将它与前一个字符pre作比较判断是否相等
if (current == pre) {
// 如果相等则次数加1
count++;
} else {
// 如果不相等则 拼接打印出来"前一个字符和连续出现的次数"
// 如果字符出现次数大于1 则追加字符+次数
sb.append(count > 1 ? pre + "" + count : pre);
count = 1;//将连续出现的次数重置为1
}
// 把当前字符变成前一个字符
pre = current;
}
// 结束后拼接 最后出现的字符和连续出现的次数
sb.append(count > 1 ? pre + "" + count : pre);
System.out.println("未压缩之前的字符串:" + new String(chars));
System.out.println("进行压缩之后的字符串:" + sb);
}
运行结果如下
未压缩之前的字符串:aabbbbababba
进行压缩之后的字符串:a2b4abab2a