博客
关于我
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/

    你可能感兴趣的文章
    Oracle 递归函数与拼接
    查看>>
    oracle 逻辑优化,提升高度,综合SQL上下文进行逻辑优化
    查看>>
    oracle 闪回关闭,关闭闪回即disable flashback的操作步骤
    查看>>
    oracle 限制用户并行,insert /*parallel */ 到不同用户,并行起不来的问题
    查看>>
    oracle--用户,权限,角色的管理
    查看>>
    Oracle-定时任务-JOB
    查看>>
    oracle.dataaccess 连接池,asp.net使用Oracle.DataAccess.dll连接Oracle
    查看>>
    oracle00205报错,Oracle控制文件损坏报错场景
    查看>>
    Oracle10g EM乱码之快速解决
    查看>>
    Oracle10g下载地址--多平台下的32位和64位
    查看>>
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    查看>>
    oracle11g dataguard物理备库搭建(关闭主库cp数据文件到备库)
    查看>>
    Oracle11G基本操作
    查看>>
    Oracle11g服务详细介绍及哪些服务是必须开启的?
    查看>>
    Oracle11g静默安装dbca,netca报错处理--直接跟换操作系统
    查看>>
    oracle12安装软件后安装数据库,然后需要自己配置监听
    查看>>
    Oracle——08PL/SQL简介,基本程序结构和语句
    查看>>
    Oracle——distinct的用法
    查看>>
    Oracle、MySQL、SQL Server架构大对比
    查看>>
    oracle下的OVER(PARTITION BY)函数介绍
    查看>>