LeetCode-in-Java

844. Backspace String Compare

Easy

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:

Follow up: Can you solve it in O(n) time and O(1) space?

Solution

public class Solution {
    public boolean backspaceCompare(String s, String t) {
        return cmprStr(s).equals(cmprStr(t));
    }

    private String cmprStr(String str) {
        StringBuilder res = new StringBuilder();
        int count = 0;
        for (int i = str.length() - 1; i >= 0; i--) {
            char currChar = str.charAt(i);
            if (currChar == '#') {
                count++;
            } else {
                if (count > 0) {
                    count--;
                } else {
                    res.append(currChar);
                }
            }
        }
        return res.toString();
    }
}