LeetCode之比较含退格的字符串(八百四十四)
【摘要】 目录
题目
解题
方法一、直接法
题目
(原题链接:https://leetcode-cn.com/problems/backspace-string-compare/)
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。
示例 1...
目录
题目
(原题链接:https://leetcode-cn.com/problems/backspace-string-compare/)
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。
示例 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 = "#a#c" 输出:true 解释:S 和 T 都会变成 “c”。
示例 4:
输入:S = "a#c", T = "b" 输出:false 解释:S 会变成 “c”,但 T 仍然是 “b”。
提示:
1 <= S.length <= 200
1 <= T.length <= 200
S
和T
只含有小写字母以及字符'#'
。
解题
方法一、直接法
分析:通过题目分析,我们知道可以利用栈的特性来实现这个算法,说到栈,估计大家一下就明白该怎么做了,直接看代码吧,我相信每个人都可以看明白。另外,一个让我惊喜的事情是这样的写法居然得到了双百的成绩,看来有时间最简单的方法就是直接法。
代码:(C++)
-
class Solution {
-
public:
-
bool backspaceCompare(string S, string T) {
-
stack<char> ss;
-
stack<char> tt;
-
for(int i = 0; i < S.length(); i++) {
-
if (S[i] == '#') {
-
if (ss.empty()) {
-
continue;
-
}
-
ss.pop();
-
} else {
-
ss.push(S[i]);
-
}
-
}
-
for (int j = 0; j < T.length(); j++) {
-
if (T[j] == '#') {
-
if (tt.empty()) {
-
continue;
-
}
-
tt.pop();
-
} else {
-
tt.push(T[j]);
-
}
-
}
-
// 通过长度大小判断,提前终止后续流程
-
if (ss.size() != tt.size()) {
-
return false;
-
}
-
for (int i = 0; i < ss.size(); i++) {
-
if (ss.top() != tt.top()) {
-
return false;
-
}
-
ss.pop();
-
tt.pop();
-
}
-
return true;
-
}
-
};
时间复杂度:O(n+m)。
空间复杂度:O(n+m)。
执行结果:
文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。
原文链接:liuzhen.blog.csdn.net/article/details/107649372
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)