例如字符串:
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);
}
输出的结果如下:
![]()
博客介绍了如何实现一种字符串压缩算法,该算法通过统计连续重复字符的数量,并将数量与字符一同输出,以达到压缩效果。给出了一段Java代码实现,包括主方法进行测试,最终输出压缩后的字符串。代码中使用了字符数组遍历和计数器的方法来完成字符统计和拼接。
7432

被折叠的 条评论
为什么被折叠?



