Skip to main content
Back to problems
#439
Medium Algorithms

Ternary expression parser

String Stack Recursion
62.6% acceptance
Mar 31, 2026
514
74

No description available.

Solution

Rust
Time O(2^n)
Space O(n)
LeetCode
solution.rs
impl Solution {
  pub fn parse_ternary(expression: String) -> String {
    let bytes = expression.as_bytes();

    fn parse(bytes: &[u8], i: &mut usize) -> u8 {
      let c = bytes[*i];
      *i += 1;
      if *i < bytes.len() && bytes[*i] == b'?' {
        *i += 1; // skip '?'
        let t = parse(bytes, i);
        *i += 1; // skip ':'
        let f = parse(bytes, i);
        if c == b'T' { t } else { f }
      } else {
        c
      }
    }

    let mut i = 0;
    let result = parse(bytes, &mut i);
    (result as char).to_string()
  }
}