LeetcodeAug 07, 2025

Backspace String Compare

Hazrat Ali

Leetcode

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".


Solution
/**
 * @param {string} S
 * @param {string} T
 * @return {boolean}
 */
const backspaceCompare = (S, T) => {
 
  for (let i = S.length - 1, j = T.length - 1, skipS = 0, skipT = 0; i >= 0 || j >= 0; i--, j--) {
   
    while (i >= 0) {
      if (S[i] === '#') {
        skipS++;
        i--;
      } else if (skipS > 0) {
        skipS--;
        i--;
      } else break;
    }

    while (j >= 0) {
      if (T[j] === '#') {
        skipT++;
        j--;
      } else if (skipT > 0) {
        skipT--;
        j--;
      } else break;
    }

    if (i >= 0 && j >= 0 && S[i] != T[j]) {
      return false;
    }

    if (i >= 0 !== j >= 0) {
      return false;
    }
  }

  return true;
};




Comments