例如字符串:
String str="aabbbcdddd";
求输出格式如下:
2a3bc4d
首先我们来分析:
这是统计一行字符串字母出现的次数,如果出现的次数大于1就在字母前面用数字代表出现的次数。
代码如下:
public static String stringZip(String str) {
String appStr = ""; //创建一个字符串容器
if (str != null && !str.equals("")) {//判断字符串是否为空并且不能为空串
int count = 1; //设置计数器,设置值为1是因为每个字符串中的字符至少会出现一次
char[] chars = str.toCharArray(); //把字符串转换成字符数组
char temp = chars[0]; //把下标为0的第一个字符赋值给temp(用于接下来的判断)
for (int i = 1; i < chars.length; i++) {//遍历字符数组,下标从1开始
if (temp == chars[i]) { //如果temp和下一个字符相等
count++; //计数器+1
}
if (temp != chars[i]) { //如果temp和下一个字符不相等
if (count > 1) { //如果计数器大于1
appStr += count; //把count拼接到appStr
}
appStr += temp; //把字符拼接到appStr
temp = chars[i]; //把不相同的字符赋值给temp去做下一轮判断
count = 1; //计数器重新归一
}
if (i == chars.length - 1) { //判断是不是最后一个字符
if (count > 1) { //如果计数器大于1
appStr += count; //把count拼接到appStr
}
appStr += temp; //把字符拼接到appStr
}
}
}
return appStr;
}
写个main方法测试一下:
public static void main(String[] args) {
String str = stringZip("aabbbcdddd");
System.out.println("输出的值:" + str);
}
输出的结果如下: