Backspace String Compare


#1

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. 1 <= S.length <= 200
  2. 1 <= T.length <= 200
  3. S and T only contain lowercase letters and '#' characters.

Follow up:

  • Can you solve it in O(N) time and O(1) space?

#2

The solution below uses a stack.

class Solution {
    public boolean backspaceCompare(String S, String T) {
       return getFinalStr(S).equals(getFinalStr(T));
    }
    
    private String getFinalStr(String s){
        Stack<Character> stack = new Stack<>();
        for(char c : s.toCharArray()){
            if(c!='#'){
                stack.push(c);
            } else{
                if(!stack.isEmpty()) stack.pop();
            }
        }
        
        StringBuilder res = new StringBuilder();
        while(!stack.isEmpty()){
            res.insert(0, stack.pop());
        }
        return res.toString();
    }
}