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


    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 <= 100
    • command 由 "G""()" 和/或 "(al)" 按某种顺序组成
    • ==

    ============================

    思路,

    1.使用StringBuilder保存需要返回的字符串。

     2.从头到尾逐个读取字符串,

            2.1如果遇到字符,直接追加到stringbuilder。

            2.2如果遇到(,判断下一个是否是),

                   2.2.1 如果是,追加 o 到stringbuilder。。i++下一次循环跳过一个字符)

                    2.2.2 如果不是,把( 之后, )之前 的字符追加到 stringbuilder。i++,下一次循环跳过一个字符)

    3,返回stringbuilder

    1. package month11;
    2. public class command {
    3. public static void main(String[] args) {
    4. String command = "Ca()m(ks)";
    5. System.out.println(Word(command));
    6. }
    7. /*请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 "G"、"()"
    8. 和/或 "(al)" 按某种顺序组成。
    9. Goal 解析器会将 "G" 解释为字符串
    10. "G"、"()" 解释为字符串 "o" ,"(al)" 解释为字符串 "al" 。然后,按原顺序将经解释得到的字符串连接成一个字符串。
    11. 给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。*/
    12. public static String Word(String command) {
    13. StringBuilder stringBuilder = new StringBuilder();
    14. for (int i = 0; i < command.length(); i++) {
    15. if (command.charAt(i) == '(') {
    16. if (command.charAt(i + 1) == ')') {
    17. // 左右括号在一起。
    18. stringBuilder.append("o");
    19. i++;//跳过 右括号
    20. } else {
    21. // 左右括号不在一起, 继续判断后续
    22. while (command.charAt(i + 1) != ')') {
    23. stringBuilder.append(command.charAt(i + 1));
    24. i++;//读取下一个字符
    25. }
    26. i++;//跳过 右括号
    27. }
    28. } else {
    29. stringBuilder.append(command.charAt(i));
    30. }
    31. }
    32. return stringBuilder.toString();
    33. }
    34. }

     

  • 相关阅读:
    Docker入门教程(详细)
    Golang反射修改变量值
    kubernetes集群之调度系统
    猿创征文|【Typescript入门】常用数据类型(3)
    同样的数据图片和模型,在kaggle上训练和在本地训练差距怎么那么大
    脑机接口的商业化道路,还要走多远多长?
    929903-87-7,Ac-Arg-Leu-Arg-MCA
    算法---格雷编码
    ROS 话题通信理论模型
    彻底理解Linux的crontab
  • 原文地址:https://blog.csdn.net/weixin_41290863/article/details/127718223