博客
关于我
Leetcode: Ternary Expression Parser
阅读量:806 次
发布时间:2023-01-31

本文共 1415 字,大约阅读时间需要 4 分钟。

为了解决这个问题,我们需要计算一个包含嵌套三元表达式的字符串的结果。三元表达式由数字0-9,问号、冒号、T和F组成,其中T表示True,F表示False。表达式是从右到左结合的。我们可以使用栈来模拟这个过程,确保正确处理嵌套结构。

方法思路

我们将字符串从右到左遍历,每遇到一个问号时,弹出栈顶的两个元素,这两个元素分别是左边的表达式和右边的表达式。根据当前字符是T还是F,决定保留哪一个结果,并将其压入栈中。这样,栈中保存的元素将帮助我们正确计算最终结果。

解决代码

import java.util.Deque;import java.util.LinkedList;public class Solution {    public String parseTernary(String expression) {        if (expression == null || expression.isEmpty()) {            return "";        }        Deque
stack = new LinkedList<>(); for (int i = expression.length() - 1; i >= 0; i--) { char c = expression.charAt(i); if (!stack.isEmpty() && stack.peek() == '?') { stack.pop(); // Pop the question mark char first = stack.pop(); // Pop the left side of the ternary stack.pop(); // Pop the colon char second = stack.pop(); // Pop the right side of the ternary if (c == 'T') { stack.push(first); } else { stack.push(second); } } else { stack.push(c); } } return String.valueOf(stack.peek()); }}

代码解释

  • 初始化栈:使用Deque来实现栈,因为它可以方便地支持弹出元素。
  • 遍历字符串:从右到左遍历字符串中的每个字符。
  • 处理问号:当遇到问号时,弹出栈顶的问号、左边的表达式和右边的表达式。根据当前字符是T还是F,决定保留左边或右边的表达式,将其压入栈中。
  • 处理其他字符:将字符直接压入栈中。
  • 返回结果:栈中的顶部元素即为最终结果。
  • 这种方法确保了我们能够正确处理右结合的三元表达式,并在O(n)时间复杂度内完成计算,适用于字符串长度不超过10000的情况。

    转载地址:http://gmgyk.baihongyu.com/

    你可能感兴趣的文章
    php -- 魔术方法 之 获取属性:__get()
    查看>>
    php -树-二叉树的实现
    查看>>
    PHP -算法-二路归并
    查看>>
    php 2条不一样 的json数据 怎么放在一个json里面_如果你是PHP开发者,请务必了解一下Composer...
    查看>>
    php 360 不记住密码,JavaScript_多种方法实现360浏览器下禁止自动填写用户名密码,目前开发一个项目遇到一个很 - phpStudy...
    查看>>
    regExp的match、exec、test区别
    查看>>
    php aes sha1解密,PHP AES加密/解密
    查看>>
    php csv 导出
    查看>>
    PHP imap 远程命令执行漏洞复现(CVE-2018-19518)
    查看>>
    php include和require
    查看>>
    ref 和out 区别
    查看>>
    php JS 导出表格特殊处理
    查看>>
    php json dom解析
    查看>>
    ReentrantReadWriteLock读写锁解析
    查看>>
    php laravel请求处理管道(装饰者模式)
    查看>>
    PHP mongoDB 操作
    查看>>
    ReentrantLock读写锁
    查看>>
    php mysql procedure获取多个结果集
    查看>>
    php mysql query 行数,PHP和MySQL:返回的行数
    查看>>
    PHP mysql_real_escape_string() 函数防SQL注入
    查看>>