미리수얌 블로그

Leetcode: String Compression 본문

코딩문제풀이/Leetcode

Leetcode: String Compression

미리수얌 2018. 9. 29. 10:42

String Compression

주어진 char 배열을 in-place 로 compress 하고 그 길이를 return 하라
하지만 compress 됬을때 더 길어진다면 그냥 그대로 놔둬라
예: [a, a] => [a, 2], [a, b, c, c, d, d, d, a] => [a, b, c, 2, d, 3, a]
이건 쉬운 문제지만 실수를 많이 할 수 있는 문제입니다.
count 를 리셋을 하지 않거나 잘 못 세는 경우가 있습니다.

public int compress(char[] chars) {
    char prev = chars[0];
    int count = 0;
    int cInd = 0;
    for (char c: chars) {
        if (prev == c) {
            count++;
        } else {
            // print to array
            cInd = add(chars, cInd, count, prev);
            prev = c;
            count = 1;
        }
    }
    // check last
    cInd = add(chars, cInd, count, prev);
    return cInd;
}
private int add(char[] chars, int index, int count, char c) {
    chars[index++] = c;
    if (count > 1) {
        String strCount = String.valueOf(count);
        for (int i = 0; i < strCount.length(); ++i) {
            chars[index++] = strCount.charAt(i);
        }
    }    
    return index;
}

'코딩문제풀이 > Leetcode' 카테고리의 다른 글

Leetcode: Set Mismatch  (0) 2018.10.05
Leetcode: Diameter of Binary Tree  (0) 2018.09.29
Leetcode: Assign Cookies  (0) 2018.09.29
LeetCode: Kth Smallest Element in a BST  (0) 2018.09.29
Leetcode: Reverse Words in a String III  (0) 2018.09.29
Comments