【leetcode刷题】T24-比较含退格的字符串

2019-07-18 09:52:41 浏览数 (2)

【英文题目】(学习英语的同时,更能理解题意哟~)

Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.

Example 1:

代码语言:javascript复制
Input: S = "ab#c", T = "ad#c"
Output: true
Explanation: Both S and T become "ac".

Example 2:

代码语言:javascript复制
Input: S = "ab##", T = "c#d#"
Output: true
Explanation: Both S and T become "".

【中文题目】

给定 ST 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

示例 1:

代码语言:javascript复制
输入:S = "ab#c", T = "ad#c"
输出:true
解释:S 和 T 都会变成 “ac”。

示例 2:

代码语言:javascript复制
输入:S = "ab##", T = "c#d#"
输出:true
解释:S 和 T 都会变成 “”。

【思路】

从后往前遍历,只要是#,判断前一个字符是否是#,是则#数量加1,不是则#数量减1并且继续判断前一个字符是否为#,直到没有字符或者找到退格后的最后一个字符,进行比较即可。

【代码】

python版本

代码语言:javascript复制
class Solution(object):
    def backspaceCompare(self, S, T):
        """
        :type S: str
        :type T: str
        :rtype: bool
        """
        count1 = 
        count2 = 
        i, j = len(S) - , len(T) - 
        while i >=  or j >= :
            while S[i] == '#':
                i -= 
                count1  = 
                while count1 >  and i >= :
                    if S[i] == '#':
                        count1  = 
                    else:
                        count1 -= 
                    i -= 
            while T[j] == '#':
                j -= 
                count2  = 
                while count2 >  and j >= :
                    if T[j] == '#':
                        count2  = 
                    else:
                        count2 -= 
                    j -= 
            if i <  and j < :
                return True
            elif (i >=  and j >= ) and S[i] == T[j]:
                i -= 
                j -= 
            else:
                return False
        return True

0 人点赞