728x90
Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.
Note that after backspacing an empty text, the text will continue empty.
Example 1:
Input: S = "ab#c", T = "ad#c"
Output: true
Explanation: Both S and T become "ac".
Example 2:
Input: S = "ab##", T = "c#d#"
Output: true
Explanation: Both S and T become "".
Example 3:
Input: S = "a##c", T = "#a#c"
Output: true
Explanation: Both S and T become "c".
Example 4:
Input: S = "a#c", T = "b"
Output: false
Explanation: S becomes "c" while T becomes "b".
Note:
- 1 <= S.length <= 200
- 1 <= T.length <= 200
- S and T only contain lowercase letters and '#' characters.
Follow up:
- Can you solve it in O(N) time and O(1) space?
class Solution {
public String backspace( String s ) {
LinkedList<Character> stack = new LinkedList<>();
String r = "";
for( int i = 0; i < s.length(); i++ ) {
char c = s.charAt(i);
if( c == '#' ) {
if( !stack.isEmpty() ) stack.pollLast();
else continue;
}
else stack.addLast( c );
}
while( !stack.isEmpty() )
r += stack.pollFirst();
return r;
}
public boolean backspaceCompare(String S, String T) {
if( backspace(S).equals( backspace(T) ) ) return true;
return false;
}
}
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 릿코드 ( LeetCode )' 카테고리의 다른 글
[LeetCode] (#1046) Last Stone Weight (0) | 2020.04.30 |
---|---|
[LeetCode] (#155) Min Stack (0) | 2020.04.26 |
[LeetCode] (#876) Middle of the Linked List (0) | 2020.04.26 |
[LeetCode] (#) Counting Elements (0) | 2020.04.26 |
[LeetCode] (#283) Move Zeroes (0) | 2020.04.26 |