【题目描述】
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa
会变为a2b1c5a3
。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)
https://leetcode.cn/problems/compress-string-lcci/description/
【示例】
【代码】admin
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 2022-12-27
*/
class Solution {
public String compressString(String str) {
StringBuilder sb = new StringBuilder();
for(int left = 0; left < str.length(); left++){
// 右指针每次从left开始, 负责移动
int right = left;
int count = 0;
while (right < str.length() && str.charAt(left) == str.charAt(right)){
count++;
right++;
}
sb.append(str.charAt(left)).append(String.valueOf(count));
left = right - 1;
}
// 题目要求,压缩后的字符串的长度不能大于等于原字符, 如果大于等于则输出元字符
return sb.toString().length() >= str.length() ? str : sb.toString();
}
}
public class Test {
public static void main(String[] args) {
String str = "aabcccccaaa";
String str1 = "abbccd";
System.out.println(new Solution().compressString(str));
System.out.println(new Solution().compressString(str1));
}
}
【其他】
【LeeCode】443. 压缩字符串 (原地修改)