欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > LeetCode 844. 比较含退格的字符串 (C++实现)

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

2025/6/9 16:47:32 来源:https://blog.csdn.net/qq_38412266/article/details/144593952  浏览:    关键词: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);}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词