Skip to content
Related Articles
Check if two strings after processing backspace character are equal or not
• Difficulty Level : Easy
• Last Updated : 17 Nov, 2020

Given two strings s1 and s2, let us assume that while typing the strings there were some backspaces encountered which are represented by #. The task is to determine whether the resultant strings after processing the backspace character would be equal or not.

Examples:

```Input: s1= geee#e#ks, s2 = gee##eeks
Output: True
Explanation: Both the strings after processing the backspace character
becomes "geeeeks". Hence, true.

Input: s1 = equ#ual, s2 = ee#quaal#
Output:  False
Explanation: String 1 after processing the backspace character
becomes "equal" whereas string 2 is "eequaal". Hence, false.

```

Approach:
To solve the problem mentioned above we have to observe that if the first character is ‘#’, that is there is certainly no character typed initially and hence we perform no operation. When we encounter any character other than ‘#’, then we add the character just after the current index. When we encounter a ‘#’, we move one index back, so instead of deleting the character, we just ignore it. Then finally compare the two strings by comparing each character from start to end.

Below is the implementation of the above approach:

## C++

 `/* C++ implementation to Check if``two strings after processing``backspace character are equal or not*/` `#include ``using` `namespace` `std;` `// function to compare the two strings``bool` `compare(string s, string t)``{``    ``int` `ps, pt, i;` `    ``/* the index of character in string which``       ``would be removed when``       ``backspace is encountered*/``    ``ps = -1;` `    ``for` `(i = 0; i < s.size(); i++) {` `        ``/* checks if a backspace is encountered or not.``            ``In case the first character is #,``            ``no change in string takes place*/``        ``if` `(s[i] == ``'#'` `&& ps != -1)` `            ``ps -= 1;` `        ``/* the character after the # is added``         ``after the character at position rem_ind1 */``        ``else` `if` `(s[i] != ``'#'``) {` `            ``s = s[i];``            ``ps += 1;``        ``}``    ``}` `    ``pt = -1;` `    ``for` `(i = 0; i < t.size(); i++) {``        ``/* checks if a backspace is encountered or not */``        ``if` `(t[i] == ``'#'` `&& pt != -1)``            ``pt -= 1;` `        ``else` `if` `(t[i] != ``'#'``) {` `            ``t[pt + 1] = t[i];` `            ``pt += 1;``        ``}``    ``}` `    ``/* check if the value of``        ``rem_ind1 and rem_ind2``        ``is same, if not then``        ``it means they have different``        ``length */``    ``if` `(pt != ps)` `        ``return` `false``;` `    ``/* check if resultant strings are empty */``    ``else` `if` `(ps == -1 && pt == -1)` `        ``return` `true``;` `    ``/* check if each character in the resultant``       ``string is same */``    ``else` `{` `        ``for` `(i = 0; i <= pt; i++) {` `            ``if` `(s[i] != t[i])` `                ``return` `false``;``        ``}``        ``return` `true``;``    ``}``}` `// Driver code``int` `main()``{``    ``// initialise two strings``    ``string s = ``"geee#e#ks"``;``    ``string t = ``"gee##eeks"``;` `    ``if` `(compare(s, t))` `        ``cout << ``"True"``;``    ``else` `        ``cout << ``"False"``;``}`

## Java

 `// Java implementation to Check if ``// two strings after processing ``// backspace character are equal or not``import` `java.util.*;``import` `java.lang.*;` `class` `GFG{`` ` `// Function to compare the two strings``static` `boolean` `compare(StringBuilder s,``                       ``StringBuilder t)``{``    ``int` `ps, pt, i;``  ` `    ``// The index of character in string``    ``// which would be removed when``    ``// backspace is encountered``    ``ps = -``1``;``  ` `    ``for``(i = ``0``; i < s.length(); i++)``    ``{``        ` `        ``// Checks if a backspace is encountered``        ``// or not. In case the first character``        ``// is #, no change in string takes place``        ``if` `(s.charAt(i) == ``'#'` `&& ps != -``1``)``            ``ps -= ``1``;``  ` `        ``// The character after the # is added``        ``// after the character at position rem_ind1``        ``else` `if` `(s.charAt(i) != ``'#'``)``        ``{``            ``s.setCharAt(ps + ``1``, s.charAt(i));``            ``ps += ``1``;``        ``}``    ``}``  ` `    ``pt = -``1``;``  ` `    ``for``(i = ``0``; i < t.length(); i++)``    ``{``        ` `        ``// Checks if a backspace is``        ``// encountered or not``        ``if` `(t.charAt(i) == ``'#'` `&& pt != -``1``)``            ``pt -= ``1``;``  ` `        ``else` `if` `(t.charAt(i) != ``'#'``)``        ``{``            ``t.setCharAt(pt + ``1``, t.charAt(i));``            ` `            ``pt += ``1``;``        ``}``    ``}``  ` `    ``// Check if the value of rem_ind1 and``    ``// rem_ind2 is same, if not then it``    ``// means they have different length``    ``if` `(pt != ps)``        ``return` `false``;``  ` `    ``// Check if resultant strings are empty``    ``else` `if` `(ps == -``1` `&& pt == -``1``)``        ``return` `true``;``  ` `    ``// Check if each character in the``    ``// resultant string is same``    ``else``    ``{``        ``for``(i = ``0``; i <= pt; i++)``        ``{``            ``if` `(s.charAt(i) != t.charAt(i))``                ``return` `false``;``        ``}``        ``return` `true``;``    ``}``}` `// Driver code``public` `static` `void` `main(String[] args)``{``    ` `    ``// Initialise two strings``    ``StringBuilder s = ``new` `StringBuilder(``"geee#e#ks"``);``    ``StringBuilder t = ``new` `StringBuilder(``"gee##eeks"``);``    ` `    ``if` `(compare(s, t))``        ``System.out.print(``"True"``);``    ``else``        ``System.out.print(``"False"``);``}``}` `// This code is contributed by offbeat`
Output:

```True

```

Time Complexity: O(N)
Auxiliary Space: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up