【数据结构-栈】力扣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即可。

相关推荐
2601_957174651 小时前
大模型算法 简单 容易 用这个方法
算法
VALENIAN瓦伦尼安教学设备1 小时前
激光对中仪采购要点
数据库·嵌入式硬件·算法
Forever Nore3 小时前
LeetCode 1 两数之和
算法·leetcode·职场和发展
To_OC3 小时前
LC 3 无重复字符的最长子串:从入门滑动窗口到优化写法,再也不怕面试官追问
javascript·算法·leetcode
(Charon)3 小时前
【C++】多线程死锁:产生原因、复现与解决方法
开发语言·c++·算法
lucas_AI4 小时前
ConfBench:大模型的「我很有把握」,到底能不能信?
人工智能·算法
oier_Asad.Chen4 小时前
【洛谷题解/AcWing题解/真题】洛谷P2330【SCOI2005】繁忙的都市(Kruskal算法的再探究))
c++·算法·贪心算法·图论·最小生成树·kruskal
青 春 记 忆7 小时前
LeetCode 53. 最大子数组和|Python 解法详解
python·算法·leetcode
豆瓣鸡7 小时前
算法日记 - Day10
算法
戴西软件7 小时前
戴西CAxWorks.VPG车辆工程仿真软件技术解析(上)——安全仿真体系的自动化构建
运维·网络·数据库·人工智能·算法·安全·自动化