比较含退格的字符串

本文参考代码随想录

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

注意:如果对空文本输入退格字符,文本继续为空。

示例 1:

输入:S = "ab#c", T = "ad#c"

输出:true

解释:S 和 T 都会变成 "ac"。

示例 2:

输入:S = "ab##", T = "c#d#"

输出:true

解释:S 和 T 都会变成 ""。

示例 3:

输入:S = "a##c", T = "#a#c"

输出:true

解释:S 和 T 都会变成 "c"。

示例 4:

输入:S = "a#c", T = "b"

输出:false

解释:S 会变成 "c",但 T 仍然是 "b"

思路

python 复制代码
class Solution:
    def get_string(self, s: str):
        result = []
        for c in s:
            if c != "#":
                result.append(c)
            elif len(result) > 0:
                result.pop()
        return result
    def backspaceCompare(self, s: str, t: str) -> bool:
        return self.get_string(s) == self.get_string(t)

双指针

同时从后向前遍历S和T(i初始为S末尾,j初始为T末尾),记录#的数量,模拟消除的操作,如果#用完了,就开始比较Si和Sj

如果Si和Sj不相同返回false,如果有一个指针(i或者j)先走到的字符串头部位置,也返回false。

python 复制代码
class Solution:
    def backspaceCompare(self, s: str, t: str) -> bool:
        i = len(s) - 1
        j = len(t) - 1
        s_skip = t_skip = 0
        while i >= 0 or j >= 0:
            while i >= 0:
                if s[i] == "#":
                    i -= 1
                    s_skip += 1
                elif s_skip > 0:
                    s_skip -= 1
                    i -= 1
                else:
                    break
            while j >= 0:
                if t[j] == "#":
                    j -= 1
                    t_skip += 1
                elif t_skip > 0:
                    j -= 1
                    t_skip -= 1
                else:
                    break
            if i < 0 or j < 0:
                break
            elif s[i] != t[j]:
                return False
            i -= 1
            j -= 1
        return i == j == -1
            
相关推荐
计算机编程-吉哥7 分钟前
YOLO26 vs YOLO11 vs YOLOv8:深度学习咖啡果实成熟度分割系统【计算机毕业设计选题推荐】
人工智能·python·深度学习·yolo·django·毕业设计
泡海椒20 分钟前
PDF 表格样式优化:jquick-pdf 边框、圆角、背景色
java·开发语言·pdf
大衛說32 分钟前
11 · 异常处理与日志
python
auto_go1 小时前
Python 实战指南(7)——账本动不动就崩?先把“魔法字符串”和“裸报错”干掉
python
Beyond_System|系统之外1 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
根目录下的猫1 小时前
RK3588适配的轻量级AI模型推荐
人工智能·后端·python·目标检测
景熙55232 小时前
15.Java 8 Stream 流入门到实战
java·开发语言·数据结构
wno7042 小时前
Spring Security权限控制
java·python·spring
ShineWinsu3 小时前
对于Coze—AI:SDK的解析
人工智能·python·ai·sdk·项目·coze·字节跳动
右耳朵猫AI3 小时前
Python周刊2026W38 | 标准流编码修复、PEP 845/846 草案、解析器提速 10%、集合字典二次复杂度
python·ai·数据科学