All Downloads are FREE. Search and download functionalities are using the official Maven repository.

g0801_0900.s0844_backspace_string_compare.Solution Maven / Gradle / Ivy

There is a newer version: 1.38
Show newest version
package g0801_0900.s0844_backspace_string_compare;

// #Easy #String #Two_Pointers #Stack #Simulation #Algorithm_II_Day_4_Two_Pointers
// #Level_1_Day_14_Stack #2022_03_24_Time_0_ms_(100.00%)_Space_40.1_MB_(87.37%)

/**
 * 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:**
 *
 * *   `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?
**/
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();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy