File tree 1 file changed +17
-39
lines changed
1 file changed +17
-39
lines changed Original file line number Diff line number Diff line change 1
1
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 ();
32
12
}
13
+ } else {
14
+ stack .push (c );
33
15
}
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 --;
42
16
}
43
- return true ;
17
+ StringBuilder sb = new StringBuilder ();
18
+ while (!stack .isEmpty ()) {
19
+ sb .append (stack .pop ());
20
+ }
21
+ return sb .toString ();
44
22
}
45
23
}
You can’t perform that action at this time.
0 commit comments