Build each final string with a stack, popping when a backspace has a preceding character, then compare the results.
Complexity
O(n + m) time and O(n + m) space.
Check whether two typed strings are equal after applying backspace characters.
Build each final string with a stack, popping when a backspace has a preceding character, then compare the results.
O(n + m) time and O(n + m) space.
package main
func backspaceCompare(s string, t string) bool {
build := func(value string) string {
output := []byte{}
for index := range value {
if value[index] == '#' {
if len(output) > 0 {
output = output[:len(output)-1]
}
} else {
output = append(output, value[index])
}
}
return string(output)
}
return build(s) == build(t)
}
class Solution:
def backspaceCompare(self, s: str, t: str) -> bool:
def build(value: str) -> str:
output: list[str] = []
for character in value:
if character == "#":
if output: output.pop()
else: output.append(character)
return "".join(output)
return build(s) == build(t)
function backspaceCompare(s: string, t: string): boolean {
const build = (value: string): string => { const output: string[] = []; for (const character of value) { if (character === "#") output.pop(); else output.push(character); } return output.join(""); };
return build(s) === build(t);
}