腾讯笔试–解压缩字符串
刚才在微博上看到一个网友贴出来一个解压缩字符串的题目,觉得很有意思,就自己写了写
大概是这样的:给一个字符串 AC[3|B[2|CA]]G
然后|前面的是反复的次数,后面是需要重复的字符串 括号代表先后顺序
我就用了一个 类似于栈的办法来处理。这里其实有点讨巧的东西在里面。因为用栈的话,你一个一个弹出还要再反序,不如倒序遍历之后用substring的办法直接截取。当然我没有测,不知道时间如何
public class Server {
/*
* 我用了一个类似于栈操作的办法来处理,首先是构造一个 worked 的string
* 接着把prepared里的字符一个一个append进去。 如果说下一个append的是“]”
* 的话,从后往前遍历worked 用while循环读到第一个是"["的index(j)
* 中间需要记录一下|的位置。 这个位置之后的substring肯定是需要重复的元素
*前面的substring是重复的次数。注意一下substring的前闭后开问题。
* 那么将worked重置,重置为worked的(0,j)加上重复构造的字符串
*
* */
public static void main(String[] args) {
String prepared = "AC[3|B[2|CA]]G";
StringBuilder worked = new StringBuilder();
for (int i &#