Skip to content

Commit 5541c93

Browse files
authored
Update Backspace String Compare.java
1 parent 37f520b commit 5541c93

File tree

1 file changed

+17
-39
lines changed

1 file changed

+17
-39
lines changed

Easy/Backspace String Compare.java

Lines changed: 17 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,23 @@
11
class Solution {
2-
public boolean backspaceCompare(String S, String T) {
3-
int i = S.length() - 1;
4-
int j = T.length() - 1;
5-
int skipS = 0;
6-
int skipT = 0;
7-
while (i >= 0 || j >= 0) {
8-
while (i >= 0) {
9-
if (S.charAt(i) == '#') {
10-
skipS++;
11-
i--;
12-
}
13-
else if (skipS > 0) {
14-
skipS--;
15-
i--;
16-
}
17-
else {
18-
break;
19-
}
20-
}
21-
while (j >= 0) {
22-
if (T.charAt(j) == '#') {
23-
skipT++;
24-
j--;
25-
}
26-
else if (skipT > 0) {
27-
skipT--;
28-
j--;
29-
}
30-
else {
31-
break;
2+
public boolean backspaceCompare(String s, String t) {
3+
return formBackSpaceString(s).equals(formBackSpaceString(t));
4+
}
5+
6+
private String formBackSpaceString(String s) {
7+
Stack<Character> stack = new Stack<>();
8+
for (char c : s.toCharArray()) {
9+
if (c == '#') {
10+
if (!stack.isEmpty()) {
11+
stack.pop();
3212
}
13+
} else {
14+
stack.push(c);
3315
}
34-
if (i >= 0 && j >= 0 && S.charAt(i) != T.charAt(j)) {
35-
return false;
36-
}
37-
if ((i >= 0) != (j >= 0)) {
38-
return false;
39-
}
40-
i--;
41-
j--;
4216
}
43-
return true;
17+
StringBuilder sb = new StringBuilder();
18+
while (!stack.isEmpty()) {
19+
sb.append(stack.pop());
20+
}
21+
return sb.toString();
4422
}
4523
}

0 commit comments

Comments
 (0)