薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
1.输入字符包括,”(“ , “)” 和 “<”和其他字符。
2.其他字符表示笔记内容。
3.()之间表示注释内容,任何字符都无效。 括号保证成对出现。
4.”<”表示退格, 删去前面一个笔记内容字符。括号不受”<”影响 。

输入描述:

输入一行字符串。长度<=10000.

输出描述:

输出一行字符串,表示最终的笔记内容。
示例1
输入

Corona(Trump)USA<<<Virus

输出

CoronaVirus

  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4. public class Main {
  5. public static void main(String[] args) {
  6. Scanner scanner = new Scanner(System.in);
  7. StringBuffer stringBuffer = new StringBuffer(scanner.nextLine());
  8. //用来保存记录括号出现的下标
  9. List<Integer> k = new ArrayList<>();
  10. //用一个列表来装括号的匹配
  11. //遇见‘(’添加首次匹配位置进去
  12. //遇见‘)’从最后一次‘(’匹配位置开始删除字符串
  13. for(int i = 0; i < stringBuffer.length();){
  14. //遇到左括号
  15. if(stringBuffer.charAt(i)=='(') {
  16. k.add(i);
  17. i++;
  18. }
  19. //遇到<
  20. else if(stringBuffer.charAt(i)=='<'&&k.size()==0) {
  21. //去除i-1和i位置的元素
  22. stringBuffer.delete(i - 1, i + 1);
  23. i = i - 1;
  24. }
  25. //遇到右括号
  26. else if(stringBuffer.charAt(i)==')') {
  27. //从左括号出现的位置删到i位置
  28. stringBuffer.delete(k.get(k.size() - 1),i + 1);
  29. //调整i的位置
  30. i = k.get(k.size() - 1);
  31. //删除左括号的记录
  32. k.remove(k.size() - 1);
  33. }
  34. else
  35. i++;
  36. }
  37. System.out.println(stringBuffer);
  38. }
  39. }
  1. import java.util.*;
  2. public class Main {
  3. public static void main(String[] args) {
  4. Scanner scanner = new Scanner(System.in);
  5. String str = scanner.next();
  6. //判断str中是否有右括号
  7. while(str.contains(")") ) {
  8. //记录右括号的位置
  9. int right = str.indexOf(")");
  10. //从右括号的位置往前找左括号的位置
  11. int left = str.lastIndexOf("(",right);
  12. String n = "";
  13. //截取括号中的内容
  14. String rep = str.substring(left+1,right);
  15. //替换
  16. str = str.replace("(" +rep+")",n );
  17. }
  18. while(str.contains("<")&& str != null) {
  19. //找到<位置
  20. int index = str.indexOf("<");
  21. String m = "";
  22. //截取<之前一位的元素
  23. String rep2 = str.substring(index -1,index);
  24. str = str.replace(rep2 + "<",m );
  25. }
  26. System.out.println(str);
  27. }
  28. }