0844. Backspace String Compare

844. Backspace String Compare #

Problem #

Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.

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 = "#a#c"
Output: true
Explanation: Both S and T become "c".

Example 4:


Input: S = "a#c", T = "b"
Output: false
Explanation: S becomes "c" while T becomes "b".

Note:

  • 1 <= S.length <= 200
  • 1 <= 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?

Problem Summary #

Given 2 strings, if a # character is encountered, delete the previous character. Determine whether the final 2 strings are exactly the same.

Solution Approach #

This problem can be simulated using the idea of a stack: when encountering a # character, delete the previous character. If it is not a # character, push the character onto the stack. Then compare the final 2 strings.

Code #


package leetcode

func backspaceCompare(S string, T string) bool {
	s := make([]rune, 0)
	for _, c := range S {
		if c == '#' {
			if len(s) > 0 {
				s = s[:len(s)-1]
			}
		} else {
			s = append(s, c)
		}
	}
	s2 := make([]rune, 0)
	for _, c := range T {
		if c == '#' {
			if len(s2) > 0 {
				s2 = s2[:len(s2)-1]
			}
		} else {
			s2 = append(s2, c)
		}
	}
	return string(s) == string(s2)
}


Calendar Jun 25, 2026
Edit Edit this page
Total visits:   You are visitor No.
中文