字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。
示例:
输入:"aabcccccaaa" 输出:"a2b1c5a3"
定义两个指针,右指针在前,左指针在后,左右两指针比较,相等,右指针向后挪,不相等,新字符串添加左指针指向的字符,添加right-left的得数,左指针挪到右指针所在的位置,右指针++。
循环到最后,没有相同字符可以比较了,导致最后的字母没法添加,则添加左指针指向的字符,添加right-left的得数。
最后判断一下,两个长度比较一下,如果原先字符串更短,就输出原先字符串
public void test8() {
String str = "aabcccccaaa";
if (str.length() < 2)
System.out.println(str);
int left = 0;
int right = 1;
StringBuilder sb = new StringBuilder();
while (right <= str.length() - 1) {
if (str.charAt(left) != str.charAt(right)) {
sb.append(str.charAt(left));
sb.append(right - left);
left = right;
right++;
}
else
right++;
}
sb.append(str.charAt(left));
sb.append(right - left);
if (sb.length() < str.length()) {
System.out.println(sb.toString());
} else
System.out.println(str);
}