题目描述:
给定一个以字符串表示的任意嵌套的三元表达式,计算表达式的值。你可以假定给定的表达式始终都是有效的并且只包含数字 0-9, ?, :, T 和 F (T 和 F 分别表示真和假)。

注意:
给定的字符串长度 ≤ 10000。
所包含的数字都只有一位数。
条件表达式从右至左结合(和大多数程序设计语言类似)。
条件是 T 和 F其一,即条件永远不会是数字。
表达式的结果是数字 0-9, T 或者 F。

示例 1:
输入: “T?2:3”
输出: “2”
解释: 如果条件为真,结果为 2;否则,结果为 3。

示例 2:
输入: “F?1:T?4:5”
输出: “4”
解释: 条件表达式自右向左结合。使用括号的话,相当于:

         "(F ? 1 : (T ? 4 : 5))"                   "(F ? 1 : (T ? 4 : 5))"-> "(F ? 1 : 4)"                 或者     -> "(T ? 4 : 5)"-> "4"                                    -> "4"

示例 3:
输入: “T?T?F:5:3”
输出: “F”
解释: 条件表达式自右向左结合。使用括号的话,相当于:

         "(T ? (T ? F : 5) : 3)"                   "(T ? (T ? F : 5) : 3)"-> "(T ? F : 3)"                 或者       -> "(T ? F : 5)"-> "F"                                     -> "F"

方法1:
主要思路:
(1)每次找出当前需要判断的三元表达式的三部分,后面两部分使用和?匹配的:进行分割,注意匹配的关系;
(2)根据第一个表达式是T或F决定使用后面两部分中的哪一个作为下一次需要判断的表达式,来进行递归的调用,知道表达式的长度为1时,直接返回结果;

class Solution {public:string parseTernary(string expression) {if(expression.size()==1){//表达式的长度为1时,直接返回结果return expression;}//辅助变量,找出当前三元表达式的对应的 :的位置int pos=2;int counts=0;while(pos<expression.size()){if(expression[pos]=='?'){//统计随后出现的?,来匹配对应的随后的:++counts;}else if(expression[pos]==':'){if(counts==0){//说明是当前的三元表达式的:,可以跳出循环break;}--counts;}++pos;}//根据起始的字符是T或F,决定递归判断下一个表达式if(expression[0]=='T'){return parseTernary(expression.substr(2,pos-2));}return parseTernary(expression.substr(pos+1));}
};

439 三元表达式解析器相关推荐

  1. LeetCode 439. 三元表达式解析器

    文章目录 1. 题目 2. 解题 2.1 递归 2.2 循环 1. 题目 给定一个以字符串表示的任意嵌套的三元表达式,计算表达式的值. 你可以假定给定的表达式始终都是有效的并且只包含数字 0-9, ? ...

  2. 表达式解析器(MVEL)

    Jeval 在运行时解析计算静态和动态表达式:支持数学,布尔,字符串,函数表达式:支持大部分的数学和布尔运算符:支持自定义函数:支持嵌套函数:支持解析:支持自定义变量解析器: 官网:http://je ...

  3. 数学表达式解析器简介

    2019独角兽企业重金招聘Python工程师标准>>> 在实际项目开发中如果需要解析数学公式,无须再运用解释器模式进行设计,可以直接使用一些第三方解析工具包,它们可以统称为数学表达式 ...

  4. AWS Lambda中的Cron表达式解析器

    目录 介绍 解释代码 解析函数 特别案例 AWS设置 AWS Lambda AWS API网关 AWS Amplify 下载 index.html - 884 B​​​​​​​ 下载 index.js ...

  5. Postgresql源码(85)查询执行——表达式解析器分析(select 1+1如何执行)

    相关 <Postgresql源码(61)查询执行--最外层Portal模块> <Postgresql源码(62)查询执行--子模块ProcessUtility> <Pos ...

  6. 表达式解析器Mvel2.0(MVFLEX Expression Language)

    时间过的好快,突然就发现,已经过去一两年了,这一两年博客也写的不多,快要进入中年了,最重要的就是自律.要好好睡觉,好好学习,好好工作. 废话不多说,这次给大家说的是 表达式语言解析Mvel2.0 简介 ...

  7. python之三元表达式嵌套三元表达式解析

    python的三元表达式相信学过python的朋友都会.但是大部分学python的朋友不知道的是三元表达式还可以嵌套三元表达式. 请看代码案例: cmp = lambda a, b: 0 if a = ...

  8. JS前端之三元表达式解析

    三元表达式 又叫三元运算符,必须有三个操作数参与的运算 操作符号:? 与: 表达式:在参与 js 程序时,都必须先计算出表达式结果,才能参与后续程序 由于三元表达式具备了一些选择的效果,所以也是一种条 ...

  9. 【IKExpression】IKExpressionV2.0简易表达式解析器

    1 IK表达式介绍(IK Expression Introduction) IK Expression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言开发的一个 ...

最新文章

  1. ClickHouse报错解决:Code: 194. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Pas
  2. jqueryrotate 使用 帮助 笔记 学习
  3. 京东618:六年历程步步为营,京东商城的安全保卫战
  4. {dede:list}和{dede:arclist}的区别
  5. ansible j2模板配置示例
  6. 用Vue搭建一个应用盒子(二):datetime-picker
  7. 次梯度法matlab代码,实例:连续化次梯度法解 LASSO 问题
  8. 信息学奥赛一本通(1173:阶乘和)
  9. Linux下tomcat无法启动/启动后无法用过127.0.0.1:8080访问解决方案
  10. angularjs 实例_AngularJS过滤器示例教程
  11. Visual C++ 时尚编程百例013(CRect类)
  12. 《离散数学及其应用》章节总结与github地址
  13. opencv 颜色识别
  14. iphone链接电脑无法在我的计算机显示,iphone连接电脑不显示信任怎么回事
  15. PB编程常用API函数
  16. 天下大事必作于细,聊聊腾讯兼容测试的升级“打怪”历程
  17. 【转载】自然语言处理(NLP)的历史、发展、成果和难题,以及在教育领域的应用情况
  18. java 篮球队淘汰赛_篮球淘汰赛怎么安排 6支篮球队淘汰赛图
  19. 写论文自动生成参考文献的方法
  20. lumen5.5 使用 jwt-auth1.0 笔记

热门文章

  1. window 便笺的快捷键
  2. 【CryptoJS】------CryptoJS包下载
  3. 今天,最新程序媛图解出炉
  4. 微信小程序数据刷新不出来
  5. 10、门禁系统安装与调试知识大全
  6. JNA调用原生函数 基础入门
  7. Python3使用动态规划处理01背包问题
  8. 服务器崩溃,主要都有哪些原因又怎么解决服务器崩溃。
  9. win10电脑开机突然变慢的原因及解决方法
  10. LVGL 8.2 按键增加菜单项