1678. 设计 Goal 解析器
题目描述
请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 "G"、"()" 和/或 "(al)" 按某种顺序组成。Goal 解析器会将 "G" 解释为字符串 "G"、"()" 解释为字符串 "o" ,"(al)" 解释为字符串 "al" 。然后,按原顺序将经解释得到的字符串连接成一个字符串。
给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。
示例 1:
输入:command = "G()(al)" 输出:"Goal" 解释:Goal 解析器解释命令的步骤如下所示: G -> G () -> o (al) -> al 最后连接得到的结果是 "Goal"
示例 2:
输入:command = "G()()()()(al)" 输出:"Gooooal"
示例 3:
输入:command = "(al)G(al)()()G" 输出:"alGalooG"
提示:
1 <= command.length <= 100command由"G"、"()"和/或"(al)"按某种顺序组成
解法
方法一:字符串替换
根据题意,只需要将字符串 command 中的 "()" 替换为 'o',"(al)" 替换为 "al" 即可。
时间复杂度 $O(n)$,空间复杂度 $O(n)$。其中 $n$ 是字符串 $command$ 的长度。
1 2 3 | |
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 | |
1 2 3 | |
1 2 3 4 5 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | |
方法二:字符串遍历
我们也可以遍历字符串 command,对于每个字符 $c$:
- 如果是
'G',直接将 $c$ 添加到结果串中; - 如果是
'(',判断下一个字符是否是')',若是,将'o'添加到结果串中,否则,将"al"添加到结果串中。
遍历结束,返回结果串即可。
时间复杂度 $O(n)$,其中 $n$ 是字符串 $command$ 的长度。空间复杂度 $O(1)$。
1 2 3 4 5 6 7 8 9 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | |