写一个简单的数字压缩算法 111155522500 -> [(1,4),(5,3),(2,2),(‘5,1’),(‘0’,2)],java
时间: 2024-09-24 19:23:18 浏览: 29
编写一个简单的数字压缩算法,将连续重复的数字组合成元组表示,例如数字序列"111155522500"转换为[(1,4), (5,3), (2,2), ('5',1), ('0',2)]。这个过程可以分为两个步骤:遍历并计数,然后创建元组。
以下是使用Java语言实现的一个简单示例:
```java
import java.util.ArrayList;
import java.util.List;
public class NumberCompressor {
public static List<int[]> compressNumber(String number) {
int[] compressed = new int[number.length()];
int count = 1, index = 0;
for (int i = 1; i < number.length(); i++) {
if (number.charAt(i) == number.charAt(i - 1)) {
count++;
} else {
compressed[index++] = count;
count = 1;
}
}
// 处理最后一个重复的字符
compressed[index] = count;
// 将整数数组转换为元组列表
List<int[]> result = new ArrayList<>();
for (int value : compressed) {
if (value != 1) { // 如果不是单个字符,添加元组
result.add(new int[]{number.charAt(i - 1), value});
}
}
return result;
}
public static void main(String[] args) {
String input = "111155522500";
List<int[]> compressedOutput = compressNumber(input);
System.out.println(compressedOutput); // 输出:[[1, 4], [5, 3], [2, 2], [5, 1], [0, 2]]
}
}
```
在这个例子中,`compressNumber`函数接受一个字符串作为输入,通过遍历和计数找到每个连续重复字符的长度,最后将结果存储到一个整数数组中。如果计数值大于1,则表明需要在结果列表中添加一个包含字符和长度的元组。`main`函数用于测试该功能。
阅读全文