Skip to content

Latest commit

 

History

History
167 lines (134 loc) · 3.94 KB

File metadata and controls

167 lines (134 loc) · 3.94 KB

English Version

题目描述

请你设计一个可以解释字符串 commandGoal 解析器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 <= 100
  • command"G""()" 和/或 "(al)" 按某种顺序组成

解法

Python3

class Solution:
    def interpret(self, command: str) -> str:
        return command.replace('()', 'o').replace('(al)', 'al')
class Solution:
    def interpret(self, command: str) -> str:
        res = ''
        i, n = 0, len(command)
        while i < n:
            c = command[i]
            if c == 'G':
                res += c
                i += 1
            elif c == '(' and command[i + 1] != ')':
                res += 'al'
                i += 4
            else:
                res += 'o'
                i += 2
        return res

Java

class Solution {
    public String interpret(String command) {
        StringBuilder sb = new StringBuilder();
        int p = 0, q = 1;
        for (; p < command.length(); p++, q++) {
            char c = command.charAt(p);
            if (c == 'G')
                sb.append('G');
            if (c == '(') {
                if (command.charAt(q) == ')') {
                    sb.append("o");
                    p++;
                    q++;
                } else {
                    sb.append("al");
                    p += 2;
                    q += 2;
                }
            }
        }
        return sb.toString();
    }
}

C++

class Solution {
public:
    string interpret(string command) {
        string res = "";
        int i = 0, n = command.size();
        while (i < n) {
            char c = command[i];
            if (c == 'G') {
                res += "G";
                i += 1;
            } else if (c == '(' && command[i + 1] != ')') {
                res += "al";
                i += 4;
            } else {
                res += "o";
                i += 2;
            }
        }
        return res;
    }
};

Go

func interpret(command string) string {
	var res string
	i, n := 0, len(command)
	for i < n {
		c := command[i]
		if c == 'G' {
			res += "G"
			i += 1
		} else if c == '(' && command[i+1] != ')' {
			res += "al"
			i += 4
		} else {
			res += "o"
			i += 2
		}
	}
	return res
}

...