728x90
반응형
입력받은 문자열을 압축하는 알고리즘 (중복되는 개수만큼 우측에 숫자로 표현)
입력 예:
KKKSSERRHEEK
출력 예 :
K4S2E3R2H
package com.wesley;
public class Main {
public static void main(String[] args) {
System.out.println(shrots("KKKSSERRHEEK"));
}
public static String shrots(String input) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < input.length(); i++) {
if (sb.toString().contains(String.valueOf(input.charAt(i)))) {
continue;
}
int dup = 1;
for (int j = i + 1; j < input.length(); j++) {
if (input.charAt(i) == input.charAt(j)) {
dup++;
}
}
sb.append(input.charAt(i)).append(dup > 1 ? dup : "");
}
return sb.toString();
}
}
조금 무식하게 풀었다.
순차 탐색을 하고도 그전에 탐색했던 문자를 또 탐색하니 효율성 측면에선 좋지 않지만, 일단 요구 사항을 해결하긴 했다.
더 좋은 방법을 위해서 더 공부해야겠다.
일단 문자열에 이미 탐색된 문자열이면 continue로 건너뛰고, 그게 아니면 중복 개수(dup)를 중복이 발견되면 증감한다.
그리고 1은 생략이므로 dup에서 1보다 크면 삼항 연산자를 통해 숫자를 문자로 파싱 해서 append 한다.
300x250
728x90
728x90
'알고리즘' 카테고리의 다른 글
프로그래머스]두 개 뽑아서 더하기 (0) | 2022.01.31 |
---|---|
알고리즘] 1부터 n까지의 소수 갯수 찾기 및 출력 (0) | 2021.11.29 |
java,알고리즘] 문자열에서 숫자만 추출하기 (0) | 2021.10.05 |
java] 회문 문자열 체크(팰린드롬) (0) | 2021.09.06 |
java]문자열에서 가장 긴 단어 찾기 (0) | 2021.09.02 |
댓글