leetcode 844 比较含退格的字符串

leetcode 844 比较含退格的字符串

题目描述

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。
示例 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 = "b"

输出:false

解释:s 会变成 "c",但 t 仍然是 "b"。
提示:

1 <= s.length, t.length <= 200

s 和 t 只含有小写字母以及字符 '#'

解法

双指针

java 复制代码
class Solution {
    public boolean backspaceCompare(String s, String t) {
        // 双指针,
        int i = s.length()-1, j = t.length()-1;
        int skipS = 0, skipT = 0;
        //
        while (i >= 0 || j >= 0) {
            // 处理退格
            while (i >= 0) {
                if (s.charAt(i) == '#') {
                    i--;
                    skipS++;
                } else if (skipS > 0) {
                    i--;
                    skipS--;
                } else {
                    break;
                }
            }
            while (j >= 0) {
                if (t.charAt(j) == '#') {
                    j--;
                    skipT++;
                } else if (skipT > 0) {
                    j--;
                    skipT--;
                } else {
                    break;
                }
            }
            // compare
            if (i >= 0 && j >= 0) {
                if (s.charAt(i) != t.charAt(j)) {
                    return false;
                }
            } else if (i >= 0 || j >= 0) {
                return false;
            }
            i--;
            j--;
        }
        return true;
    }
}

时间复杂度:O(n)

空间复杂度:O(1)

思路:使用两个数组模拟栈,遇到#出栈,最后比较两个数组的元素。

时间复杂度:O(n)

空间复杂度:O(n)

相关推荐
雾岛听蓝34 分钟前
Linux用户权限管理基础
linux
a31582380635 分钟前
大语言模型应用开发技术要求
算法·大语言模型·应用开发
倦王37 分钟前
力扣日刷26112
算法·leetcode·职场和发展
遇见火星39 分钟前
Linux 命令篇:df、du、fdisk 磁盘管理
linux·运维·服务器·df·du·fdisk
凌~风41 分钟前
013-计算机操作系统实验报告之Linux命令!
linux·计算机操作系统·实验报告
牛奶咖啡131 小时前
shell脚本编程(七)
linux·shell脚本编程·列表for循环·列表for循环的多种示例·for循环的break用法·for循环continue用法·c语言型for循环
liu****1 小时前
能源之星案例
人工智能·python·算法·机器学习·能源
2501_901147831 小时前
环形房屋打家劫舍算法
考研·算法·leetcode·高考
智驱力人工智能1 小时前
守护矿山动脉 矿山皮带跑偏AI识别系统的工程化实践与价值 皮带偏离检测 皮带状态异常检测 多模态皮带偏离监测系统
大数据·人工智能·opencv·算法·安全·yolo·边缘计算
智驱力人工智能1 小时前
构筑安全红线 发电站旋转设备停机合规监测的视觉分析技术与应用 旋转设备停机检测 旋转设备异常检测 设备停机AI行为建模
人工智能·opencv·算法·安全·目标检测·计算机视觉·边缘计算