844. Backspace String Compare

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?

解題

使用 stack 來做消除的動作

Runtime: 0 ms, faster than 100%

Memory Usage: 2 MB, less than 87.44%

func backspaceCompare(s string, t string) bool {
    sstack := make([]byte, 0)
    tstack := make([]byte, 0)
    
    for i:=0; i<len(s); i++ {
        if  s[i] == '#' {
            if len(sstack) != 0  {
                sstack = sstack[:len(sstack) - 1]
            }
        } else {
            sstack = append(sstack, s[i])
        }
    }

    for i:=0; i<len(t); i++ {
        if  t[i] == '#' {
            if len(tstack) != 0  {
                tstack = tstack[:len(tstack) - 1]
            }
        } else {
            tstack = append(tstack, t[i])
        }
    }


    return string(sstack) == string(tstack)
}

Last updated