Skip to main content
Back to problems
#844
Easy Algorithms

Backspace string compare

Two Pointers String Stack Simulation
49.8% acceptance
Feb 22, 2026
7909
385
Given two strings s and t, return true if they are equal when both are typed into empty text editors. '#' means a backspace character. Note that after backspacing an empty text, the text will continue empty.

Solution

Rust
Time O(n)
Space O(1)
LeetCode
solution.rs
/*
 * Given two strings s and t, return true if they are equal when both are typed into empty text editors. '#' means a backspace character.
 * Note that after backspacing an empty text, the text will continue empty.
 * Example 1:
 * Input: s = "ab#c", t = "ad#c"
 * Output: true
 * Explanation: Both s and t become "ac".
 * Example 2:
 * Input: s = "ab##", t = "c#d#"
 * Output: true
 * Explanation: Both s and t become "".
 * Example 3:
 * Input: s = "a#c", t = "b"
 * Output: false
 * Explanation: s becomes "c" while t becomes "b".
 * Constraints:
 * 1 <= s.length, t.length <= 200
 * s and t only contain lowercase letters and '#' characters.
 * Follow up: Can you solve it in O(n) time and O(1) space?
 */

impl Solution {
  pub fn backspace_compare(s: String, t: String) -> bool {
    fn process(chars: impl Iterator<Item=u8>) -> Vec<u8> {
      let mut stack = vec![];
      for c in chars {
        if c == b'#' { stack.pop(); }
        else { stack.push(c); }
      }
      stack
    }
    process(s.bytes()) == process(t.bytes())
  }
}