/**
* [문자열압축]
* 반복되는 문자의 개수를 세는 방식의 기본직인 문자열 압축 메서드를 작성
* [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());
}
}
반응형
'CS > 자료구조 문제' 카테고리의 다른 글
문제 // 자료구조 // 문자열(String) // 문자열회전 // toJava (0) | 2018.08.03 |
---|---|
문제 // 자료구조 // 배열(Array) // 0행렬 // toJava (0) | 2018.08.03 |
문제 // 자료구조 // 문자열(String) // 유사문자열검증 // toJava (0) | 2018.08.03 |
문제 // 자료구조 // 문자열(String) // 회문순열검증 // toJava (0) | 2018.08.03 |
문제 // 자료구조 // 문자열(String) // replace 만들기 // toJava (0) | 2018.08.03 |