#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)
/*
* 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())
}
}