최초 풀이 -> 각 알파벳, 알파벳 개수 정보를 하나의 문자열에 모은 후 char[]에 다시 할당
참고 풀이 - > 링크
알파벳 개수를 groupLength으로 파악한 후 곧바로 char[]에 할당, 이게 끝날때까지 반복
최초 풀이(2ms)
class Solution {
public int compress(char[] chars) {
StringBuilder sb = new StringBuilder();
int cnt = 1;
// 어떤 알파벳이 몇 개 있는지 sb에 구한다.
for(int i = 1; i < chars.length + 1; i++) {
if (i == chars.length) {
sb.append(chars[i - 1]);
if (cnt > 1) {
sb.append(cnt);
}
break;
}
if (chars[i - 1] == chars[i]) {
cnt += 1;
} else {
sb.append(chars[i - 1]);
if (cnt > 1) {
sb.append(cnt);
}
cnt = 1;
}
}
// 구한 값을 char[]에 할당한다.
String result = sb.toString();
for(int i = 0; i < sb.length(); i++) {
chars[i] = result.charAt(i);
}
return sb.length();
}
}
참고 풀이(1ms)
class Solution {
public int compress(char[] chars) {
int i = 0, res = 0;
while(i < chars.length) {
int groupLength = 1;
while (i + groupLength < chars.length && chars[i] == chars[i + groupLength]) {
groupLength++;
}
chars[res++] = chars[i];
if (groupLength > 1) {
for(char c: Integer.toString(groupLength).toCharArray()) {
chars[res++] = c;
}
}
i += groupLength;
}
return res;
}
}
'코딩테스트' 카테고리의 다른 글
[leetcode] 1448. Count Good Nodes in Binary Tree (0) | 2024.06.14 |
---|---|
[leetcode] 872. Left-Similar Leafs (0) | 2024.06.11 |
[leetcode] 724. Find Pivot Index (1) | 2024.06.09 |
[leetcode] 238. Product of Array Except self (1) | 2024.06.09 |
[leetcode] 151. Reverse Words in String (0) | 2024.06.07 |