Program to find final text in an editor by performing typing and backspacing in Python

Suppose we have a string that represents characters typed into an editor, where the symbol "<-" indicates a backspace operation. We need to find the final state of the editor after processing all typing and backspacing operations.

For example, if the input is s = "ilovepython<-<-ON", the output will be "ilovepythON". This is because there are two backspace operations after "ilovepython" that delete the last two characters ("on"), then "ON" is typed again.

Algorithm

To solve this problem, we will follow these steps:

  • Create an empty list to store the result characters
  • For each character in the input string:
    • If the character is '-' and the previous character in result is '<', then:
      • Remove the '<' character (pop from result)
      • If result is not empty, remove one more character (backspace operation)
    • Otherwise, append the character to result
  • Join all characters in result and return the final string

Example

Here's the implementation of the solution:

class Solution:
    def solve(self, s):
        res = []
        for i in s:
            if i == '-' and res and res[-1] == '<':
                res.pop()  # Remove the '<' character
                if res:    # If there are more characters, remove one (backspace)
                    res.pop()
            else:
                res.append(i)
        return "".join(res)

# Test the solution
ob = Solution()
result = ob.solve("ilovepython<-<-ON")
print(result)

The output of the above code is:

ilovepythON

How It Works

Let's trace through the example "ilovepython<-<-ON":

  • Characters 'i', 'l', 'o', 'v', 'e', 'p', 'y', 't', 'h', 'o', 'n' are added to result
  • When we encounter '<', it's added to result
  • When we encounter '-', we check if the last character is '<':
    • Remove '<' from result
    • Remove 'n' from result (backspace operation)
  • The same process repeats for the second '<-' pair, removing 'o'
  • Finally, 'O' and 'N' are added to get "ilovepythON"

Alternative Approach

Here's a more straightforward approach using string replacement:

def process_editor_text(s):
    result = []
    i = 0
    while i < len(s):
        if i < len(s) - 1 and s[i:i+2] == '<-':
            # Found backspace operation
            if result:
                result.pop()  # Remove last character
            i += 2  # Skip both '<' and '-'
        else:
            result.append(s[i])
            i += 1
    return "".join(result)

# Test the alternative approach
text = "ilovepython<-<-ON"
final_text = process_editor_text(text)
print(final_text)

The output of the above code is:

ilovepythON

Conclusion

Both approaches simulate text editor operations by using a list to track characters and handling backspace operations when encountering the "<-" pattern. The key is to recognize the backspace sequence and remove the appropriate characters from the result.

Updated on: 2026-03-25T10:36:38+05:30

218 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements