ZOJ-2571

来源:互联网 发布:足彩数据软件 编辑:程序博客网 时间:2024/06/05 04:38

这题也有些细节要考虑,对字符串处理感觉自己做的一直不大好,本以为会WA几次的,竟然一次AC了,有点意外,还是需要些自信吧,用到栈就用JAVA写了。需要数据结构的地方C真心不方便

import java.util.Scanner;import java.util.Stack;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);int n = sc.nextInt();Stack<Character> stack = new Stack<Character>();sc.nextLine();while (n-- > 0){stack.clear();String line = sc.nextLine();char temp = 0;StringBuilder sb = new StringBuilder();for (char c : line.toCharArray()){if (c != ')')stack.push(c);else{while (true){char cc = stack.pop();if (Character.isDigit(cc))for (int i = 0; i < cc - '0'; i++)sb.insert(0, temp);else if (Character.isLetter(cc)){if ((!stack.isEmpty() && !Character.isDigit(stack.peek())) || (stack.isEmpty()))sb.insert(0, cc);temp = cc;}else if (cc == '('){if (!stack.isEmpty()){int num;if (Character.isDigit(stack.peek()))num = stack.pop();elsenum = 1;for (int i = 0; i < num - '0'; i++)for (char ch : sb.toString().toCharArray())stack.push(ch);}elsefor (char ch : sb.toString().toCharArray())stack.push(ch);sb.delete(0, sb.length());break;}}}}for (char ch : sb.toString().toCharArray())stack.push(ch);for (int i = 0; i < stack.size(); i++)System.out.print(stack.get(i));System.out.println();}}}


0 0
原创粉丝点击