字符串压缩与解压缩的实现
概述
本文将介绍如何使用Java语言实现字符串的压缩与解压缩功能。字符串压缩指的是将字符串中重复的字符或字符组合替换为更短的表达形式,从而减小字符串的长度。字符串解压缩则是将压缩后的字符串重新还原为原始字符串。
实现步骤
下表展示了实现字符串压缩与解压缩功能的步骤。
步骤 | 描述 |
---|---|
1. | 检查输入的字符串是否为空,如果为空则返回空字符串 |
2. | 对字符串进行压缩或解压缩操作 |
3. | 返回压缩或解压缩后的结果字符串 |
代码实现
字符串压缩
首先,我们需要实现字符串的压缩功能。以下是实现字符串压缩的代码:
public static String compressString(String str) {
if (str == null || str.isEmpty()) {
return "";
}
StringBuilder compressed = new StringBuilder();
int count = 1;
char prevChar = str.charAt(0);
for (int i = 1; i < str.length(); i++) {
if (str.charAt(i) == prevChar) {
count++;
} else {
compressed.append(prevChar);
compressed.append(count);
count = 1;
prevChar = str.charAt(i);
}
}
// 处理最后一个字符
compressed.append(prevChar);
compressed.append(count);
// 比较压缩后的字符串长度与原字符串长度,返回较短的那个
return compressed.length() >= str.length() ? str : compressed.toString();
}
上述代码中,我们使用了StringBuilder来构建压缩后的字符串。遍历输入的字符串,统计连续相同字符的数量,并将字符和数量追加到StringBuilder中。最后,比较压缩后的字符串长度和原字符串长度,返回较短的那个。
字符串解压缩
接下来,我们需要实现字符串的解压缩功能。以下是实现字符串解压缩的代码:
public static String decompressString(String str) {
StringBuilder decompressed = new StringBuilder();
for (int i = 0; i < str.length(); i += 2) {
char ch = str.charAt(i);
int count = Integer.parseInt(String.valueOf(str.charAt(i + 1)));
// 将字符重复count次追加到解压缩后的字符串中
for (int j = 0; j < count; j++) {
decompressed.append(ch);
}
}
return decompressed.toString();
}
上述代码中,我们遍历压缩后的字符串,每次取出字符和重复次数。然后,将字符重复指定次数,并将重复后的字符追加到StringBuilder中。最后,返回解压缩后的字符串。
使用示例
我们可以使用以下示例代码来测试字符串压缩与解压缩的功能:
public static void main(String[] args) {
String originalStr = "aabbbcccccd";
String compressedStr = compressString(originalStr);
String decompressedStr = decompressString(compressedStr);
System.out.println("原始字符串:" + originalStr);
System.out.println("压缩后的字符串:" + compressedStr);
System.out.println("解压缩后的字符串:" + decompressedStr);
}
上述代码中,我们定义了一个原始字符串,并分别调用compressString()和decompressString()方法对其进行压缩和解压缩操作。最后,打印出原始字符串、压缩后的字符串和解压缩后的字符串。
总结
本文介绍了如何使用Java语言实现字符串的压缩与解压缩功能。通过编写compressString()方法和decompressString()方法,我们可以对字符串进行压缩和解压缩操作。这些方法可以应用于需要减小字符串长度或还原原始字符串的场景中。