CS/자료구조 문제

문제 // 자료구조 // 문자열(String) // 문자열압축 // toJava

문스코딩 2018. 8. 3. 12:14
/**
* [문자열압축]
* 반복되는 문자의 개수를 세는 방식의 기본직인 문자열 압축 메서드를 작성
* [ex] aabcccaaa => a2b1c3a3
* 만약 압축된 문자열의 길이가 문자열의 길이보다 길다면 기존 문자열을 반환
* 문자열은 대소분자 알파벳으로만 이루어짐
*
* [풀이]
* => StringBuilder 이용 문자열 압축처리
*/

public class Q06 {

/* main */
public static void main(String[] args) {
System.out.println(compress("aasseerffffff")); // 압축성공
System.out.println(compress("aaabbbsss")); // 압축성공
System.out.println(compress("qweasdzxc")); // 압축실패
}

/* compress */
static String compress(String str) {
StringBuffer sb = new StringBuffer();
char[] arrChar = str.toCharArray();

// == 정렬 ==
// Arrays.sort(arrChar);

// == 압축 ==
char now = arrChar[0];
int count = 1;
for (int i = 1; i < arrChar.length; i++) {
if (now == arrChar[i]) {
count++;
} else {
sb.append("" + now + count);
now = arrChar[i];
count = 1;
}
}
sb.append("" + now + count);
return (sb.length() > str.length() ? str : sb.toString());
}
}


반응형