• leetcode1678:设计Goal解析器(11.6每日一题)


    题目描述:

    请你设计一个可以解释字符串 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"

    思路:

    通过栈的应用,先是让command字符串的所有字符都进栈,如果碰到“  )”,则进行while循环,每次去除栈顶元素。如果遇到“( ”,则结束while()。

    删除元素的个数如果等于3,则定义的初始化字符串str+“la”(因为是从后往前便利的)。

    删除元素的个数如果等于1,则定义的初始化字符串str+“o”。

    遇到G,直接在str上面加“G”

    最后直接返回字符串str。

    1. class Solution {
    2. public:
    3. string interpret(string command) {
    4. stack<char>s;
    5. string str="";
    6. for(int i=0;ilength();i++)
    7. {
    8. s.push(command[i]);
    9. }
    10. while(!s.empty())
    11. {
    12. if(s.top()==')')
    13. {
    14. int count_s=0;
    15. while(s.top()!='(')
    16. {
    17. count_s++;
    18. s.pop();
    19. }
    20. if(count_s==1)
    21. {
    22. str=str+"o";
    23. }
    24. if(count_s==3)
    25. {
    26. str=str+"la";
    27. }
    28. s.pop();
    29. }
    30. else
    31. {
    32. str=str+"G";
    33. s.pop();
    34. }
    35. }
    36. reverse(str.begin(),str.end());
    37. return str;
    38. }
    39. };

  • 相关阅读:
    python-opencv学习笔记1 opencv中的GUI特征
    Git 提交记录生成日报
    CNN详解——反向传播过程
    【web-利用信息泄露】(10.2)收集公布的信息、使用推论
    一场九年前的“出发”:奠基多模态,逐鹿大模型
    JavaFX、合并碰撞的弹球
    详细教程:Postman 怎么调试 WebSocket
    MySQL权限与安全管理
    基于FaceNet的人脸识别
    C++-关键字:auto
  • 原文地址:https://blog.csdn.net/m0_63743577/article/details/127737358