栈-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;
    }
};
看到最后,如果对您有所帮助,还请点赞、收藏和关注一键三连,在未来还会继续带来优秀的内容,感谢观看,我们下期再见!
相关推荐
源代码•宸4 小时前
Leetcode—1123. 最深叶节点的最近公共祖先【中等】
经验分享·算法·leetcode·职场和发展·golang·dfs
liulilittle4 小时前
LIBTCPIP 技术探秘(tun2sys-socket)
开发语言·网络·c++·信息与通信·通信·tun
yyy(十一月限定版)4 小时前
c++(3)类和对象(中)
java·开发语言·c++
alphaTao4 小时前
LeetCode 每日一题 2026/1/5-2026/1/11
算法·leetcode
DYS_房东的猫4 小时前
写出第一个程序
c++
ulias2124 小时前
AVL树的实现
开发语言·数据结构·c++·windows
黎雁·泠崖4 小时前
二叉树知识体系全梳理:从基础到进阶一站式通关
c语言·数据结构·leetcode
山上三树4 小时前
详细介绍 C/C++ 中的内存泄漏
c语言·c++
CSDN_RTKLIB4 小时前
CMake构建目标核心命令
c++
郝学胜-神的一滴4 小时前
图形学中的纹理映射问题:摩尔纹与毛刺的深度解析
c++·程序人生·unity·游戏引擎·图形渲染·unreal engine