腾讯2020校园招聘第一题:压缩算法
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dc05adfbf7ff8a715fad3205f72d09e5.png)
import java.util.Stack;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s=sc.next();
System.out.println(decodeString(s));
}
public static String decodeString(String s) {
if(s.length()==0) {
return s;
}
StringBuilder ss=new StringBuilder();
for(Character c:s.toCharArray()) {
if(c!='[') {
ss.append(c);
}
}
Stack<Integer> numsStack=new Stack<>();
Stack<StringBuilder> stringStack=new Stack<>();
int mul=0;
StringBuilder sb=new StringBuilder();
for (Character c : ss.toString().toCharArray()) {
if(c>='0' && c<='9') {
mul=mul*10+(c-'0');
}
else if(c=='|') {
numsStack.push(mul);
stringStack.push(sb);
sb=new StringBuilder();
mul=0;
}
else if(c==']') {
int cnt=numsStack.pop();
StringBuilder tmp=sb;
sb=stringStack.pop();
for (int i = 0; i < cnt; i++) {
sb.append(tmp);
}
}
else {
sb.append(c);
}
}
return sb.toString();
}
}
相关Leetcode 394. 字符串解码
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/fe1da66a3cbed18d8a798efa9c055f57.png)
class Solution {
public String decodeString(String s) {
if(s.length()==0){
return s;
}
i