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

一、题目解析

1、#代表退格字符,可以理解为删除

2、s和t中只有小写字符以及字符'#'

二、算法原理

解法:栈模拟

通过string简单模拟栈,得到的结果不需要额外转换

对于即将加入的元素是'#',我们对字符串pop_back(),尾删处理

有需要可以自行查询相关语法细节

链接:cplusplus.com - The C++ Resources Network

细节:题目上给出了空串遇到'#'的处理,结果仍然为空,所以我们在判断删除或加入字符串之前需要特殊处理一下

三、代码示例

cpp 复制代码
class Solution {
public:
    bool backspaceCompare(string s, string t)
    {
        string ret1,ret2;
        for(int i = 0;i<s.size();i++)
        {
            if(s[i] == '#'&&ret1.size()==0) continue;//特判对空串退格
            if(s.size()>0&&s[i] == '#')
                ret1.pop_back();
            else ret1 += s[i];
        }
        for(int j = 0;j<t.size();j++)
        {
            if(t[j] == '#'&&ret2.size()==0) continue;
            if(t.size()>0&&t[j] == '#')
                ret2.pop_back();
            else ret2 += t[j];
        }
        return ret1 == ret2;
    }
};
看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!
相关推荐
H.莓飛5 分钟前
【C++】类与对象(末):static、友元与拷贝优化
linux·开发语言·c++·visual studio
sm_926787059 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
by209999 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
colinu9 小时前
C++ 异步任务与线程生命周期:`std::async`、`future`、`thread`、`jthread` 与协作式退出
java·jvm·c++
wuminyu10 小时前
ForkJoinPool窃取线程在扫描其他WorkQueue时的随机采样算法与Phase线程挂起唤醒机制解析
java·linux·c语言·jvm·c++
longlongzihan10 小时前
链表找环:Floyd 判圈算法(LeetCode 141 & 142 )
c++·算法·leetcode·链表
liulilittle10 小时前
Linux 下 select 测试函数
linux·服务器·网络·数据库·c++·select·c
yi01110 小时前
LeetCode 643. 子数组最大平均数 I|从暴力枚举到滑动窗口
人工智能·笔记·python·算法·leetcode·滑动窗口
无忧.芙桃11 小时前
C++语言原理与实践(十二):list类的底层实现
c++·windows·list
沫璃染墨11 小时前
《Linux工程实践篇(二):线程池实战——从线程安全单例到完整源码实现》
linux·开发语言·c++·单例模式·设计模式·系统架构