package LeetCode_1678 /** * 1678. Goal Parser Interpretation * https://leetcode.com/problems/goal-parser-interpretation/ * You own a Goal Parser that can interpret a string command. * The command consists of an alphabet of "G", "()" and/or "(al)" in some order. * The Goal Parser will interpret "G" as the string "G", "()" as the string "o", and "(al)" as the string "al". * The interpreted strings are then concatenated in the original order. Given the string command, return the Goal Parser's interpretation of command. Example 1: Input: command = "G()(al)" Output: "Goal" Explanation: The Goal Parser interprets the command as follows: G -> G () -> o (al) -> al The final concatenated result is "Goal". Example 2: Input: command = "G()()()()(al)" Output: "Gooooal" Example 3: Input: command = "(al)G(al)()()G" Output: "alGalooG" Constraints: 1. 1 <= command.length <= 100 2. command consists of "G", "()", and/or "(al)" in some order. * */ class Solution { /* * solution: scan command, Time:O(n), Space:O(n) * */ fun interpret(command: String): String { val sb = StringBuilder() var i = 0 val n = command.length while (i < n) { if (command[i] == 'G') { sb.append("G") } else if (i + 1 < n && command[i + 1] == ')') { sb.append("o") i++ } else { sb.append("al") i += 3 } i++ } return sb.toString() } }