Goal解析以及进阶练习
goal解析
请你设计一个可以解释字符串 command 的 Goal 解析器 。
- command 由 “G”、”()” 和/或 “(al)” 按某种顺序组成。
- Goal 解析器会将 “G” 解释为字符串 “G”、”()” 解释为字符串 “o” ,”(al)” 解释为字符串 “al” 。然后,按原顺序将经解释得到的字符串连接成一个字符串。
- 给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。
P-题解
又是偷懒的一天,直接用库函数了
- 需要注意的是下面的括号是要转义的,不然会识别成null。
- 此方法的时间复杂度会较大,个人猜测是函数内部的循环或条件语句分析相对O-题解比较复杂。
public String interpret(String command) {
command = command.replace('G','G');
command = command.replaceAll("\\(\\)","o");
command = command.replaceAll("\\(al\\)","al");
return command;
}
O-题解
遍历
- 本题只会出现”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)
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Kalyan的小书房!
評論