leetcode 844. Backspace String Compare(比较含退格的字符串)

SAP-ABAP:SAP数据库视图的创建图文详解 在“短文本”字段中输入视图的描述。在“表/视图”字段中输入要基于的表名。如果视图基于多个表,可以在这里输入主表。点击“表/视图字段”按钮,选择要包含在视图中的字段。如果视图基于多个表,点击“关系”按钮来定义表之间的连接条件。在弹出的窗口中,选择要连接的表,并定义连接条件(例如。 阅读详情

Given two strings s and t, return true if they are equal when both are typed into empty text editors. ‘#’ means a backspace character.

Note that after backspacing an empty text, the text will continue empty.

Example 1:

Input: s = “ab#c”, t = “ad#c”
Output: true
Explanation: Both s and t become “ac”.

Example 2:

Input: s = “ab##”, t = “c#d#”
Output: true
Explanation: Both s and t become “”.

Constraints:

1 <= s.length, t.length <= 200
s and t only contain lowercase letters and ‘#’ characters.

Follow up: Can you solve it in O(n) time and O(1) space?

两个字符串s和t,它们可能含有退格符“#”,遇到一个退格“#”就是把前面一个字符消掉,
判断s和t是否相等。

思路:

方法一:
本题最容易想到的是stack.
遇到字母进栈,遇到’#'则出栈。

下面用char array模仿stack, stop代表 s 的栈顶,ttop代表 t 的栈顶。
最后比较栈的长度和栈内元素即可。

public boolean backspaceCompare(String s, String t) {
    char[] chs = s.toCharArray();
    char[] cht = t.toCharArray();

    if(chs.length == 0 && cht.length == 0) return true;

    int stop = -1;
    int ttop = -1;

    for(int i = 0; i < chs.length; i++) {
        if(chs[i] == '#') {
            if(stop >= 0) stop --;
        } else {
            stop ++;
            chs[stop] = chs[i];
        }   
    }

    for(int i = 0; i < cht.length; i++) {
        if(cht[i] == '#') {
            if(ttop >= 0) ttop --;
        } else {
            ttop ++;
            cht[ttop] = cht[i];
        }   
    }

    if(stop != ttop) return false;

    for(int i = 0; i <= stop; i++) {
        if(chs[i] != cht[i]) return false;
    }
    return true;
}

但是题目中follow up 指出是否能用时间负责度O(n), 空间复杂度O(1).
上面的方法空间复杂度是O(n).
O(1)的话只能考虑用指针了。

方法二:
现用指针,从字符串的末尾开始,倒着走,
遇到“#”,则删掉前面的字符。那有可能有连续多个的“#”,这时需要一个计数器,记录需要删掉前面多少个字符。

还有可能遇到一种情况就是字符串长度不一致,可能一个指针已经超出左边界了,但是另一个还没到左边界。

方法一的速度更快。

public boolean backspaceCompare(String s, String t) {
    int sp = s.length() - 1;
    int tp = t.length() - 1;
    int sNext = 0;
    int tNext = 0;
    
    while(sp >= 0 || tp >= 0) {
       while(sp >= 0) {
           if(s.charAt(sp) == '#') {
               sNext ++;
               sp --;
           } else if(sNext > 0) {
               sNext --;
               sp --;
           } else {
               break;
           }
           
       }
       while(tp >= 0) {
           if(t.charAt(tp) == '#') {
               tNext ++;
               tp --;
           } else if(tNext > 0) {
               tNext --;
               tp --;
           } else {
               break;
           }
       }
        if(sp >= 0 && tp >= 0) {
            if(s.charAt(sp) != t.charAt(tp)) return false; 
        }
        
        if((sp >= 0) != (tp >= 0)) return false;
        sp --;
        tp --;
    }
    
    return true;
}
从 ABAP 视角看 JSON :7.40 版本带来的那些改变 摘要:ABAP 对 JSON 的原生支持 随着企业系统与外部 API 的交互增多,ABAP 从 NetWeaver 7.40 开始原生支持 JSON 格式。通过复用现有 XML 基础设施,ABAP 团队引入 JSON-XML 概念,使用 sXML Library 和 IF_SXML=>CO_XT_JSON 常量处理 JSON 数据。开发人员可通过 CALL TRANSFORMATION 语句实现 ABAP 数据与 JSON 的双向转换,大幅简化了与外部系统的数据交互。这种标准化的 JSON 处理方式提 阅读详情

相关推荐

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1532

844.比较含退格的字符串(力扣LeetCode)

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true。# 代表退格字符。:如果对空文本输入退格字符,文本继续为空。输入:s = “ab#c”, t = “ad#c”输出:true解释:s 和 t 都会变成 “ac”。输入:s = “ab##”, t = “c#d#”输出:true解释:s 和 t 都会变成 “”。输入:s = “a#c”, t = “b”输出:false解释:s 会变成 “c”,但 t 仍然是 “b”。

m0_73841621的博客 750

实验记录 | 如何拆分scATAC-seq数据成为单个细胞?(1、解决barcode问题)

在师兄的帮助下,我得到了师兄筛选过的细胞的barcode的数据,那么接下来我想根据这些barcode,将来源于同一个barcode的细胞的reads提取出来,这个还是一个蛮有技术含量的事情的,因为上次我有使用过perl的脚本进行提取,最后的实验结果很糟糕,故而这件事情一直搁置到现在,没有继续去做(我的脚本的编写能力还是有待于加强,可能是刚刚喝了奶茶,和老妈弟弟聊了好多闲话,很开心,觉得在某种程度上休息够了,对于工作也是一种非常快乐和积极的状态了)。 0。前期失败尝试回顾 ...

weixin_40640700的博客 1886

844. Backspace String Compare

题目的意思大概是有两个字符串,其中的#表示退格键,让比较最后两个字符串是否相当。 很容易想到的思路就是用一个栈进行模拟这个过程,特别需要注意如果一个串是空串也是可以退格的。 但是很容易想到的另一个特性就是,前面的字符有可能被后面的退格符删去,但是如果如果从后往前进行遍历的话那么一个字符一旦保留就不会被删除,我们比较两个字符串保留下来的字符,一旦发现不相等就直接返回。 总体来讲就是双指针加逆序遍历。 其实看到这个题我直接就想到双指针加逆序遍历了。但是昨天晚上也不知道是因为困了还是什么原因,写了二十分钟写的都是

T_T233333333的博客 249

从零开始!Jupyter Notebook的安装教程(附带pip和Python的安装教程)

本篇文章创造性的以“授人以渔”的方式教大家如何安装Jupyter Notebook、pip和Python,以及对于Jupyter Notebook代码路径的基本设置。

保证安全,保证寿终正寝的博客 13万+

【机械视觉】Halcon—【二、Halcon算子全面介绍(超详细版)】

Halcon 的算子(operators)按照功能被系统性地划分为多个类别,官方文档中目前(Halcon 22.11 版本)共有 19 个主分类,每个主分类下还有若干子分类。 本人在此对这19个分类的常用核心算子进行了一系列的总结,且本人在文章最后还总结了一些案例经验。 注意: ​​​​​​​跨分类调用:某些算子可能在多个分类中,但官方文档中会明确其主分类。 例如: read_image(文件操作)常被其他分类(如图像处理)的示例调用,但其核心功能是文件读取。

qq_3517289697的博客 3912

leetcode 844带空格的字符串比较

题目: 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: Input: S = “ab#c”, T = “ad#c” Output: true Explanation: B...

weixin_44482648的博客 369

ADBMS1818芯片

 可测量多达18串电池电压 3 mV最大总测量误差 内置isoSPI接口 使用单根双绞线,长达100米 290 μs内可完成系统中所有单体电池电压测量。

m0_61973119的博客 4271

844. Backspace String Compare(双指针法)

844. Backspace String Compare 代码如下 class Solution { public: bool backspaceCompare(string s, string t) { int first=s.length()-1,second=t.length()-1; int space_s=0,space_t=0; while(first>=0 || second>=0){ whil

just_a_fresh_man的博客 353

YOLO11涨点优化:卷积魔改 | DCNv2升级版本,助力检测

在DCN的基础上,增加了2个创新点,分别是调制模块和使用多个调制后的DCN模块,从形成了DCN的升级版本——DCNv2

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 967

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

Leetcode_C++笔记之844. Backspace String Compare(比较含退格的字符串)

【代码】844. Backspace String Compare。

JayShaun的博客 550

YOLOv8 智能交通流量监测完整解决方案

YOLOv8智能交通流量监测系统基于先进的目标检测技术,提供实时车辆识别与统计分析功能。该系统通过虚拟检测线实现多方向车流量统计,支持多种车辆类型分类,并具备数据可视化、异常事件预警等核心功能。完整解决方案包含模型训练、实时检测、批量处理、结果分析等模块,并提供Flask API和Docker两种部署方案。系统采用YOLOv8算法实现高效检测,支持GPU加速,可通过量化、剪枝等技术进一步优化性能,为智能交通管理提供可靠的数据支持和技术保障。

u010117029的博客 117

LeetCode 844. Backspace String Compare比较含退格的字符串

一、题目 Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character. 二、大致思路 对于第一个String S,遍历S里面的每个字符,如果当前字符不是‘#’,就存到栈sStack里面,如果当前字符是‘...

可控的事情要谨慎,不可控的事情要乐观。 199

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Leetcode 844.比较含退格的字符串(Backspace String Compare)

Leetcode 844.比较含退格的字符串 1 题目描述(Leetcode题目链接)   给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 注意:如果对空文本输入退格字符,文本继续为空。 输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。 输入:S = "ab##", T = "c#d#" 输出:true 解释:S 和 T 都会变成 “”。 提示: 1 <= S.len

qq_39378221的博客 198

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Leetcode844.Backspace String Compare比较含退格的字符串

给定S和T两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。#代表退格字符。 示例 1: 输入:S = "ab#c", T = "ad#c" 输出:true 解释:S 和 T 都会变成 “ac”。 示例 2: 输入:S = "ab##", T = "c#d#" 输出:true 解释:S 和 T 都会...

Ha12312的博客 92

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

leetcode 844. 比较含退格的字符串(Backspace String Compare)

目录 题目描述: 示例 1: 示例 2: 示例 3: 示例 4: 解法: 题目描述: 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。 示例 1: 输入:S = "a...

weixin_30840573的博客 103

LeetCode - 844 - 比较含退格的字符串(backspace-string-compare)

一 目录 不折腾的前端,和咸鱼有什么区别目录一 目录二 前言三 解题及测试四 LeetCode Submit五 解题思路六 进一步思考二 前言 难度:涉及知识:题目地址:题目内容:给定 ...

weixin_41806099的博客 275

leetcode 844. Backspace String Compare 比较含退格的字符串-耗时100%

邹九的个人博客 384

Leetcode每日一题:844.backspace-string-compare(比较含退格的字符串)

思路:用栈的机制模拟退格过程;本来不想用这种方法的,对时间复杂度不满意,想用双指针写但没写出来; string compare(string s) { string res = ""; int len = s.size(); int num = 0; //最好手动用num记录数组元素个数,如果每次都用s.size()会导致时间复杂度增大 for (int i = 0; i < len; i++) { if (s[i] != '#') .

CodeLuweir 的博客 315

LeetCode_String_844. Backspace String Compare 比较含退格的字符串(Java)【双指针,找规律】

一,题目描述 英文描述 Given two strings s and t, return true if they are equal when both are typed into empty text editors. '#' means a backspace character. Note that after backspacing an empty text, the text will continue empty. 中文描述 给定 S 和 T 两个字符串,当它们分别...

&再见萤火虫&的博客 230

LeetCode-4.9-美区-844-E-比较含退格的字符串(Backspace String Compare)

文章目录思路解法1-逆序指针解法2-栈 Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character. 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # ...

Heorin X的博客 237

【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)

目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度...

weixin_30713953的博客 138

leetcode---C++实现---844. Backspace String Compare(比较含退格的字符串)

题目 Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character. Note that after backspacing an empty text, the text will continue emp...

u013482632的博客 403
上一篇: Java Pair & 类型转换问题
下一篇: leetcode 905. Sort Array By Parity(按奇偶排序数组)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值