题解 | #压缩字符串(一)#
压缩字符串(一)
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(); } }
#算法题#