String Compression
Leetcode #443 | Medium | Указатель на запись
Идея
Цикл по массиву + цикл по повторам, заводим указатель word и изменяем in-place, сжатие гарантирует что мы не выйдем за пределы массива
Big-O
- Время
O(N) - Память
O(1)
Код
class Solution {
public int compress(char[] chars) {
int write = 0;
for (int i = 0; i < chars.length; i++) {
int count = 1;
char currentChar = chars[i];
while (i + 1 < chars.length && chars[i + 1] == chars[i]) {
i++;
count++;
}
chars[write++] = currentChar;
if (count > 1) {
for (char c : String.valueOf(count).toCharArray()) {
chars[write++] = c;
}
}
}
return write;
}
}