goal解析

请你设计一个可以解释字符串 command 的 Goal 解析器 。

  • command 由 “G”、”()” 和/或 “(al)” 按某种顺序组成。
  • Goal 解析器会将 “G” 解释为字符串 “G”、”()” 解释为字符串 “o” ,”(al)” 解释为字符串 “al” 。然后,按原顺序将经解释得到的字符串连接成一个字符串。
  • 给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。

P-题解

又是偷懒的一天,直接用库函数了

  1. 需要注意的是下面的括号是要转义的,不然会识别成null。
  2. 此方法的时间复杂度会较大,个人猜测是函数内部的循环或条件语句分析相对O-题解比较复杂。
    public String interpret(String command) {
    command = command.replace('G','G');
    command = command.replaceAll("\\(\\)","o");
    command = command.replaceAll("\\(al\\)","al");
    return command;
    }

O-题解

遍历

  1. 本题只会出现”G”,”()”以及”(al)”所以不符合”()”与”G”的条件一律可以按照”(al)”处理。
    class Solution {
    public String interpret(String command) {
    StringBuilder res = new StringBuilder();
    for (int i = 0; i < command.length(); i++) {
    if (command.charAt(i) == 'G') {
    res.append("G");
    } else if (command.charAt(i) == '(') {
    if (command.charAt(i + 1) == ')') {
    res.append("o");
    } else {
    res.append("al");
    }
    }
    }
    return res.toString();
    }
    }
    来源:力扣(LeetCode)