Skip to content

Commit 32036c8

Browse files
committed
Backspace String Compare
1 parent 102685d commit 32036c8

File tree

5 files changed

+82
-0
lines changed

5 files changed

+82
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ All solutions will be accepted!
120120
|237|[Delete Node In A Linked List](https://leetcode-cn.com/problems/delete-node-in-a-linked-list/description/)|[java/py/js](./algorithms/DeleteNodeInALinkedList)|Easy|
121121
|405|[Convert A Number To Hexadecimal](https://leetcode-cn.com/problems/convert-a-number-to-hexadecimal/description/)|[java/py/js](./algorithms/ConvertANumberToHexadecimal)|Easy|
122122
|796|[Rotate String](https://leetcode-cn.com/problems/rotate-string/description/)|[java/py/js](./algorithms/RotateString)|Easy|
123+
|844|[Backspace String Compare](https://leetcode-cn.com/problems/backspace-string-compare/description/)|[java/py/js](./algorithms/BackspaceStringCompare)|Easy|
123124

124125
# Database
125126
|#|Title|Solution|Difficulty|
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Backspace String Compare
2+
This problem is easy to solve by stack
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public boolean backspaceCompare(String S, String T) {
3+
List<Character> sStack = new ArrayList<Character>();
4+
List<Character> tStack = new ArrayList<Character>();
5+
6+
for (char c : S.toCharArray()) {
7+
if (c != '#') {
8+
sStack.add(c);
9+
} else if (sStack.size() > 0) {
10+
sStack.remove(sStack.size() - 1);
11+
}
12+
}
13+
14+
for (char c : T.toCharArray()) {
15+
if (c != '#') {
16+
tStack.add(c);
17+
} else if (tStack.size() > 0) {
18+
tStack.remove(tStack.size() - 1);
19+
}
20+
}
21+
22+
char[] sArray = new char[sStack.size()];
23+
for (int i = 0; i < sStack.size(); i++) sArray[i] = sStack.get(i);
24+
25+
char[] tArray = new char[tStack.size()];
26+
for (int i = 0; i < tStack.size(); i++) tArray[i] = tStack.get(i);
27+
28+
return new String(sArray).equals(new String(tArray));
29+
}
30+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
/**
2+
* @param {string} S
3+
* @param {string} T
4+
* @return {boolean}
5+
*/
6+
var backspaceCompare = function(S, T) {
7+
let sStack = [],
8+
tStack = []
9+
10+
S.split('').forEach(c => {
11+
if (c !== '#') {
12+
sStack.push(c)
13+
} else if (sStack.length > 0) {
14+
sStack.pop()
15+
}
16+
})
17+
18+
T.split('').forEach(c => {
19+
if (c !== '#') {
20+
tStack.push(c)
21+
} else if (tStack.length > 0) {
22+
tStack.pop()
23+
}
24+
})
25+
26+
return sStack.join('') === tStack.join('')
27+
};
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution(object):
2+
def backspaceCompare(self, S, T):
3+
"""
4+
:type S: str
5+
:type T: str
6+
:rtype: bool
7+
"""
8+
s_stack = []
9+
t_stack = []
10+
11+
for c in S:
12+
if c != '#':
13+
s_stack.append(c)
14+
elif len(s_stack) > 0:
15+
s_stack.pop()
16+
17+
for c in T:
18+
if c != '#':
19+
t_stack.append(c)
20+
elif len(t_stack) > 0:
21+
t_stack.pop()
22+
return ''.join(s_stack) == ''.join(t_stack)

0 commit comments

Comments
 (0)