题解 | #压缩字符串(一)#
压缩字符串(一)
https://www.nowcoder.com/practice/c43a0d72d29941c1b65c857d8ac9047e
public class CompressString {
public String compressString(String param) {
// write code here
if (param == null || param.length() == 0) {
return "";
}
Stack stack = new Stack();
char[] chars = param.toCharArray();
ArrayList<Integer> list = new ArrayList<>();
stack.push(chars[0]);
int count = 1;
for (int i = 1; i < chars.length; i++) {
Object peek = stack.peek();
if (chars[i] == (char) peek) {
count++;
} else {
stack.push(chars[i]);
list.add(count);
count = 1;
}
}
list.add(count);
StringBuilder builder = new StringBuilder();
for (int i = list.size() - 1; i >= 0; i--) {
Integer integer = list.get(i);
if (integer == 1) {
builder.append(stack.pop());
} else {
builder.append(list.get(i)).append(stack.pop());
}
}
builder.reverse();
return builder.toString();
}
}
#算法题#
