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?
public class Solution {
public bool BackspaceCompare(string S, string T) {
var stack1 = new Stack<char>();
var stack2 = new Stack<char>();
for(int i=0;i<S.Length;i++){
if(S[i]=='#'){
if(stack1.Count!=0){
stack1.Pop();
}
}
else{
stack1.Push(S[i]);
}
}
for(int i=0;i<T.Length;i++){
if(T[i]=='#'){
if(stack2.Count!=0){
stack2.Pop();
}
}
else{
stack2.Push(T[i]);
}
}
if(stack1.Count != stack2.Count){
return false;
}
while(stack1.Count>0){
if(stack1.Pop()!=stack2.Pop()){
return false;
}
}
return true;
}
}
Time Complexity: O(n)
Space Complexity: O(n)