JAVA写一个简单的数字压缩算法例如 111155522500 -> [(1,4),(5,3),(2,2),(‘5,1’),(‘0’,2)]
时间: 2024-10-09 12:01:26 浏览: 12
在 Java 中,你可以使用 HashMap 来实现一个简单的数字压缩算法,将连续的数字序列压缩成元组列表。以下是该算法的一个示例:
```java
import java.util.HashMap;
import java.util.Map;
public class NumberCompression {
public static void main(String[] args) {
String input = "111155522500";
System.out.println(compressNumber(input));
}
public static List<int[]> compressNumber(String numStr) {
char[] chars = numStr.toCharArray();
Map<Character, Integer> counts = new HashMap<>();
int currentCount = 1;
for (int i = 1; i < chars.length; i++) {
if (chars[i] == chars[i - 1]) {
currentCount++;
} else {
counts.put(chars[i - 1], currentCount);
currentCount = 1;
}
}
counts.put(chars[chars.length - 1], currentCount); // Add the last character count
List<int[]> result = new ArrayList<>();
for (Map.Entry<Character, Integer> entry : counts.entrySet()) {
result.add(new int[]{entry.getKey(), entry.getValue()});
}
return result;
}
}
```
当你运行这个程序,它会输出给定字符串 `111155522500` 的压缩结果:`[[1, 4], [5, 3], [2, 2], [5, 1], [0, 2]]`。
阅读全文