当前位置: 首页 > article >正文

LeetCode 844. 比较含退格的字符串 (C++实现)

1. 题目描述

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。

示例 1:

输入:s = “ab#c”, t = “ad#c”
输出:true
解释:s 和 t 都会变成 “ac”。

示例 2:

输入:s = “ab##”, t = “c#d#”
输出:true
解释:s 和 t 都会变成 “”。

示例 2:

输入:s = “a#c”, t = “b”
输出:false
解释:s 会变成 “c”,但 t 仍然是 “b”。

2. 解题思路

分别处理s和t,以s举例,首先定义慢指针slow和快指针fast,遍历字符串元素,如果快指针指向的当前元素不等于#,则将快指针指向位置的值赋给慢指针指向的位置,慢指针向后移动一位,否则继续移动快指针,不赋值,如果快指针指向的当前元素等于#,这时候判断slow指针是否在字符串的起始位置,不是的话减1。循环结束后比较处理之后的s和t是否相同。

3. 代码实现

class Solution {
public:
    string change(string str)
    {
        int slow = 0;
        for (int fast = 0; fast < str.size(); fast++)
        {
            if (str[fast] != '#')
            {
                str[slow] = str[fast];
                slow++;
            }
            else if (slow > 0)
            {
                slow--;
            }
        }
        return str.substr(0,slow);
    }

    bool backspaceCompare(string s, string t) {
        return change(s) == change(t);
    }
};

http://www.kler.cn/a/447137.html

相关文章:

  • 在 Spark 上实现 Graph Embedding
  • Java编程基础与高级应用:从入门到实践
  • 【JavaEE初阶】线程安全问题
  • 【MongoDB】使用 MongoDB 存储日志、审批、MQ等数据的案例及优点
  • R机器学习:朴素贝叶斯算法的理解与实操
  • SpringBoot项目Jar包使用systemctl运行
  • STM32F407寄存器点灯
  • 批量提取zotero的论文构建知识库做问答的大模型(可选)——含转存PDF-分割统计PDF等
  • 【react项目】从零搭建react项目[nodejs安装]
  • 我的2024年度总结
  • 【AIGC-ChatGPT进阶副业提示词】末日生存指南 2.0:疯狂科学家的荒诞智慧
  • C vs C++: 一场编程语言的演变与对比
  • 【什么是事务?】
  • ISICDM 2024|思腾合力受邀参加第七届图像计算与数字医学国际研讨会
  • Clickhouse(Centos)
  • QString转const char* bug
  • vue中如何实现商品多规格添加(后台商城管理系统)
  • JVM性能优化一:初识内存泄露-内存溢出-垃圾回收
  • vue3前端组件库的搭建与发布(一)
  • MFC/C++学习系列之简单记录4——错误解决与错误提示