Skip to content

Commit d3142a6

Browse files
committed
string O(n) O(n)
1 parent 01a4ab8 commit d3142a6

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
/**
2+
* @param {string} s
3+
* @param {string} t
4+
* @return {boolean}
5+
*/
6+
7+
// p: str, str
8+
// r: boolean
9+
10+
// i
11+
// ab#c
12+
// j
13+
// ad#c
14+
15+
var backspaceCompare = function (s, t) {
16+
let i = s.length - 1,
17+
j = t.length - 1;
18+
let skipS = 0,
19+
skipT = 0;
20+
21+
while (i >= 0 || j >= 0) {
22+
while (i >= 0) {
23+
console.log(skipS, i, skipT, j);
24+
if (s[i] === "#") {
25+
skipS++;
26+
i--;
27+
} else if (skipS > 0) {
28+
skipS--;
29+
i--;
30+
} else break;
31+
}
32+
33+
while (j >= 0) {
34+
if (t[j] === "#") {
35+
skipT++;
36+
j--;
37+
} else if (skipT > 0) {
38+
skipT--;
39+
j--;
40+
} else break;
41+
}
42+
if (i >= 0 && j >= 0 && s[i] !== t[j]) return false;
43+
if (i >= 0 !== j >= 0) return false;
44+
i--;
45+
j--;
46+
}
47+
48+
return true;
49+
};
50+
51+
// O(n) O(n)
52+
// var backspaceCompare = function(s, t) {
53+
// return getStr(s) === getStr(t);
54+
// };
55+
// const getStr = (str) => {
56+
// let stack = [];
57+
// for (let c of str) {
58+
// c === '#' ? stack.pop() : stack.push(c);
59+
// }
60+
// return stack.join('');
61+
// }
62+
63+
console.log(backspaceCompare("aaa###", "a#a#a#"));

0 commit comments

Comments
 (0)