花旗2021笔试最后一题
输入: 3*[a2*[c]]
输出 : accaccacc
思路,用栈做:
//list里面存放[]内的数据
// nei里面存放list.get(0)的数据
// 用*来判断他要循环多少次,循环后的结果存在nei中,最后反转一下即可
package huaqi;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Stack;
public class huaqi2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
char[] ch=s1.toCharArray();
Stack<Character> stack=new Stack<>();
List<String> ls=new ArrayList<>();
StringBuilder nei=new StringBuilder();
for (int i = 0; i < ch.length; i++){
if(ch[i]!=']') stack.push(ch[i]);
else {
while (!stack.empty()){
char k=stack.pop();
if(k>='a'&&k<='z'){
nei.append(k+"");
}else if(k=='['){
ls.add(0,nei.toString());
}
else if(k=='*'){
int a=stack.pop()-'0';
for (int j = 1; j < a; j++) {
nei.append(ls.get(0));
}
}
}
}
}
System.out.println(nei.reverse());
}
//3*[a2*[c]]
//list里面存放[]内的数据
// nei里面存放list.get(0)的数据
// 用*来判断他要循环多少次,循环后的结果存在nei中,最后反转一下即可
}