diff --git a/Easy/844. Backspace String Compare/Solution.js b/Easy/844. Backspace String Compare/Solution.js new file mode 100644 index 0000000..3b1000b --- /dev/null +++ b/Easy/844. Backspace String Compare/Solution.js @@ -0,0 +1,39 @@ +// Backspace String Compare Logic Starts Here +const backspaceCompare = (s, t) => { + const getNextValidCharIndex = (str, index) => { + let backspaceCount = 0; + while (index >= 0) { + if (str[index] === "#") { + backspaceCount++; + index--; + } else if (backspaceCount > 0) { + backspaceCount--; + index--; + } else { + break; + } + } + return index; + }; + + let sPointer = s.length - 1; + let tPointer = t.length - 1; + + while (sPointer >= 0 || tPointer >= 0) { + sPointer = getNextValidCharIndex(s, sPointer); + tPointer = getNextValidCharIndex(t, tPointer); + + if (sPointer < 0 && tPointer < 0) { + return true; + } + + if (sPointer < 0 || tPointer < 0 || s[sPointer] !== t[tPointer]) { + return false; + } + + sPointer--; + tPointer--; + } + + return true; +}; diff --git a/Easy/README.md b/Easy/README.md index c89e983..ad95c27 100644 --- a/Easy/README.md +++ b/Easy/README.md @@ -30,6 +30,7 @@ | **637** | [Average of Levels in Binary Tree](637.%20Average%20of%20Levels%20in%20Binary%20Tree/) | | **653** | [Two Sum IV - Input is a BST](653.%20Two%20Sum%20IV%20-%20Input%20is%20a%20BST/) | | **700** | [Search in a Binary Search Tree](700.%20Search%20in%20a%20Binary%20Search%20Tree/) | +| **844** | [Backspace String Compare](844.%20Backspace%20String%20Compare/) | | **896** | [Monotonic Array](896.%20Monotonic%20Array/) | | **905** | [Sort Array by Parity](905.%20Sort%20Array%20by%20Parity/) | | **1337** | [K Weakest Rows in a Matrix](1337.%20K%20Weakest%20Rows%20in%20a%20Matrix/) |