2017-05-03 4 views
-2

기본 방법 : 정수 배열을 가져 와서 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" 
    } 

압축 알고리즘 : 지금까지 배열 한 후 연속 제로로 시작해야합니다 먼저 비 제로에서 끝납니다. 0이 아닌 값으로 시작하여 배열 끝까지 계속할 수 있어야합니다. 뭔가 (4,00004565000,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); 
}