主要方法 :使用SparseCompression()获取整数数组并将其压缩为字符串。
public class Compress
{
public static void main(String[] args)
{
int[] test = {0, 0, 0, 0, 0, 0, 0, 999};
String result = SparseCompression(test);
// expected result: "#7,999,"
System.out.println(result);
//need to compress something like(2,0,0,0,54,0,0,2)
// expected result: "2,#3,54,#2,2"
}
压缩算法: 到目前为止,数组必须以连续的零开始,然后在第一个非零结束。需要能够以非零开始并继续直到数组结束。像(4,0,0,0,0,45,65,0,0,0,5)这样的东西。
public static String SparseCompression(int[] array)
{
int count = 0;
int nonZero = 0;
int after = 0;
for(int i = 0; i< array.length; i++)
{
if(array[i] == 0)
{
count++;
}
else if(array[i] != 0)
{
nonZero = array[i];
}
}
Integer.toString(count);
String result = "#" + count + ", " + nonZero;
return result;
}
}
答案 0 :(得分:0)
public static String SparseCompression(int[] array) {
if (null == array || array.length == 0) {
return "";
}
StringBuilder sb = new StringBuilder();
int count = 0;
for (int a : array) {
if (a == 0) {
count++;
continue;
}
if (count != 0) {
sb.append("#" + count + ",");
count = 0;
}
sb.append(a + ",");
}
if (count != 0) {
sb.append("#" + count + ",");
}
return sb.toString().substring(0, sb.length() - 1);
}