import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param param string字符串
* @return string字符串
*/
public String compressString(String param) {
// write code here
// 一些特殊情况的处理
if (0 == param.length() || 1 == param.length()) {
return param;
}
int len = param.length(); // 定义一个整型变量,用于存放 param 的长度
int p = 1; // 定义一个指针,用于指向当前所在的位置
int account = 1; // 定义一个整型变量,用于存放当前位置上的字符连续出现的次数
char chr = param.charAt(0); // 定义一个变量,用于存放临时的字符
StringBuffer sb = new StringBuffer(""); // 定义一个 StringBuffer,用于存放最终的返回结果
while (p < len) { // 不能越界
char tmp = param.charAt(p); // 获取 p 指针指向的当前位置上的字符
if (tmp == chr) {
account++; // 如果当前位置上的字符和它的前一个字符相等,那么 account++
p++; // 同时,p 指针向后移动一位
} else { // 如果当前位置上的字符和它的前一个字符不相等,那么就要将它的前一个字符及其出现次数加入到 StringBuffer 中
if (account == 1) {
sb.append(chr); // 如果前一个字符出现的次数为 1,那么直接将字符加入到 StringBuffer 中即可
} else {
sb.append(chr);
sb.append(account);
}
chr = tmp;
account = 1;
p++;
}
}
// 别忘了,p 越界之后,将剩余的字符加入到 StringBuffer 中
if (account == 1) {
sb.append(chr);
} else {
sb.append(chr);
sb.append(account);
}
return new String(sb);
}
}