【数据结构-栈】力扣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 只含有小写字母以及字符 '#'

重构字符串

cpp 复制代码
class Solution {
public:
    bool backspaceCompare(string s, string t) {
        string res1, res2;
        for(char c : s){
            if(c != '#'){
                res1.push_back(c);
            }
            else if(!res1.empty()){
                res1.pop_back();
            }
        }

        for(char c : t){
            if(c != '#'){
                res2.push_back(c);
            }
            else if(!res2.empty()){
                res2.pop_back();
            }
        }
        return res1 == res2;
    }
};

使用了栈的方法,我们定义了两个新字符串res1和res2来记录s和t进行计算后的最终结果,最后看res1和res2是否相等。当s或t字符串中的字符不为#的时候,就将他推入到我们构造的新字符串中,如果字符为#,我们还要判断他是否为空,如果不为空的话,那么就将重构字符串的最后一个字符弹出。

最后返回res1 == res2即可。

相关推荐
PAK向日葵2 小时前
【算法导论】PDD 0817笔试题题解
算法·面试
地平线开发者5 小时前
ReID/OSNet 算法模型量化转换实践
算法·自动驾驶
地平线开发者5 小时前
开发者说|EmbodiedGen:为具身智能打造可交互3D世界生成引擎
算法·自动驾驶
星星火柴9366 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑7 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
闪电麦坤958 小时前
数据结构:迭代方法(Iteration)实现树的遍历
数据结构·二叉树·
C++、Java和Python的菜鸟9 小时前
第六章 统计初步
算法·机器学习·概率论
Cx330❀9 小时前
【数据结构初阶】--排序(五):计数排序,排序算法复杂度对比和稳定性分析
c语言·数据结构·经验分享·笔记·算法·排序算法
散1129 小时前
01数据结构-Prim算法
数据结构·算法·图论
起个昵称吧9 小时前
线程相关编程、线程间通信、互斥锁
linux·算法