# 844. Backspace String Compare

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?

#### 解题要点：

用stack来存，并且秉持一个观念，只能add除“#”外的字符，遇到“#”时就pop。

```java
class Solution {
    public boolean backspaceCompare(String S, String T) {
        return finalStr(S).equals(finalStr(T));
    }
    
    public String finalStr(String s){
        Stack<String> st = new Stack();
        for(int i = 0; i < s.length(); i++){
            String c = String.valueOf(s.charAt(i));
            
            if(!c.equals("#")){
                st.add(c);
            }
            else if(!st.isEmpty()){
                st.pop();
            }
//             以下同理，但是条件复杂很多，没必要
//             if(c.equals("#") && !st.isEmpty()){
//                     st.pop();
//             }
//             else if(!c.equals("#")){
//                     st.add(c);
//             }
        }
        return st.toString();
    }
}
```
