java实现压缩字符串(附完整源码)
时间: 2023-11-12 14:04:59 浏览: 52
下面是Java实现压缩字符串的完整源码:
```java
import java.util.HashMap;
import java.util.Map;
public class StringCompressor {
public static String compress(String str) {
if (str == null || str.isEmpty()) {
return str;
}
Map<Character, Integer> charCountMap = new HashMap<>();
for (char c : str.toCharArray()) {
charCountMap.put(c, charCountMap.getOrDefault(c, 0) + 1);
}
StringBuilder compressedStr = new StringBuilder();
for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()) {
compressedStr.append(entry.getKey());
compressedStr.append(entry.getValue());
}
return compressedStr.length() < str.length() ? compressedStr.toString() : str;
}
public static void main(String[] args) {
String str = "aabcccccaaa";
String compressedStr = compress(str);
System.out.println("Original String: " + str);
System.out.println("Compressed String: " + compressedStr);
}
}
```
这个实现使用了一个HashMap来记录每个字符在输入字符串中出现的次数,然后将字符和它们的出现次数组合成一个压缩后的字符串。如果压缩后的字符串比原始字符串短,就返回压缩后的字符串,否则返回原始字符串。在上面的示例中,输入字符串"aabcccccaaa"将会被压缩为"a2b1c5a3"。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)