问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4030 访问。

给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。

输入:S = "ab#c", T = "ad#c"

输出:true

解释:S 和 T 都会变成 “ac”。

输入:S = "ab##", T = "c#d#"

输出:true

解释:S 和 T 都会变成 “”。

输入:S = "a##c", T = "#a#c"

输出:true

解释:S 和 T 都会变成 “c”。

输入:S = "a#c", T = "b"

输出:false

解释:S 会变成 “c”,但 T 仍然是 “b”。

提示:

  • 1 <= S.length <= 200
  • 1 <= T.length <= 200
  • S 和 T 只含有小写字母以及字符 '#'。

Given two strings S and T, return if they are equal when both are typed into empty text editors. # means a backspace character.

Input: S = "ab#c", T = "ad#c"

Output: true

Explanation: Both S and T become "ac".

Input: S = "ab##", T = "c#d#"

Output: true

Explanation: Both S and T become "".

Input: S = "a##c", T = "#a#c"

Output: true

Explanation: Both S and T become "c".

Input: S = "a#c", T = "b"

Output: false

Explanation: S becomes "c" while T becomes "b".

Note:

  • 1 <= S.length <= 200
  • 1 <= T.length <= 200
  • S and T only contain lowercase letters and '#' characters.

示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4030 访问。

public class Program {

    public static void Main(string[] args) {
var S = "ab#c";
var T = "ad#c"; var res = BackspaceCompare(S, T);
Console.WriteLine(res); S = "a#c";
T = "b#cd"; res = BackspaceCompare2(S, T);
Console.WriteLine(res); Console.ReadKey();
} private static bool BackspaceCompare(string S, string T) {
var stackS = GetStack(S);
var stackT = GetStack(T);
if(stackS.Count != stackT.Count) return false;
for(var i = 0; i < stackS.Count; i++) {
if(stackS.ElementAt(i) != stackT.ElementAt(i))
return false;
}
return true;
} private static Stack<char> GetStack(string S) {
var stack = new Stack<char>();
foreach(var c in S) {
if(c == '#') {
if(stack.Count != 0) stack.Pop();
} else {
stack.Push(c);
}
}
return stack;
} private static bool BackspaceCompare2(string S, string T) {
var sb1 = GetStringBuilder(S);
var sb2 = GetStringBuilder(T);
return sb1.ToString() == sb2.ToString();
} private static StringBuilder GetStringBuilder(string S) {
var sb = new StringBuilder();
for(var i = 0; i < S.Length; ++i) {
if(S[i] == '#') {
if(sb.Length > 0) sb.Remove(sb.Length - 1, 1);
} else sb.Append(S[i]);
}
return sb;
} }

以上给出2种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/4030 访问。

True
False

分析:

设 S 和 T 两个单词中最长的单词的字符数为 n,那么显而易见,以上2种算法的时间复杂度均为:  。

C#LeetCode刷题之#844-比较含退格的字符串​​​​​​​(Backspace String Compare)的更多相关文章

  1. [Swift]LeetCode844. 比较含退格的字符串 | Backspace String Compare

    Given two strings S and T, return if they are equal when both are typed into empty text editors. # m ...

  2. 【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)

    目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以 ...

  3. LeetCode--844--比较含退格的字符串(java)

    给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...

  4. leetcode-844-比较含退格的字符串(用vector取代stack)

    题目描述: 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = ...

  5. Q844 比较含退格的字符串

    给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...

  6. Leetcode844.Backspace String Compare比较含退格的字符串

    给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...

  7. LeetCode844 比较含退格的字符串

    题目描述: 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = ...

  8. C#LeetCode刷题-栈

    栈篇 # 题名 刷题 通过率 难度 20 有效的括号 C#LeetCode刷题之#20-有效的括号(Valid Parentheses) 33.0% 简单 42 接雨水   35.6% 困难 71 简 ...

  9. C#LeetCode刷题-双指针

    双指针篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.5% 中等 11 盛最多水的容器   43.5% 中等 15 三数之和   16.1% 中等 16 最接近的三数之和   3 ...

随机推荐

  1. Java中多线程的使用(超级超级详细)线程安全原理解析 4

    Java中多线程的使用(超级超级详细)线程安全 4 什么是线程安全? 有多个线程在同时运行,这些线程可能会运行相同的代码,程序运行的每次结果和单线程运行的结果是一样的,而且其他变量的值也和预期的值一样 ...

  2. 【面试题资源共享】一文总结最高频软件测试|sq|语句|思维发散|计算机基础|Linux|测试用例|接口测试|等技术面试题

    思维发散 1.一个球, -把尺子长度是球直径的2/3,怎样测出半径?2.四枚硬币,花面朝上,每次翻转三个,几次可以将四枚硬币变为字面朝上?3. U2合唱团在1 7分钟内赶到演唱会现场问题?4.小明一家 ...

  3. 不吹不擂,315 道 Python 面试题,欢迎挑战!

    各位大佬暂时先来315道题尝尝吧,后面有时间再继续补充. 有缘人如果看到这些题,不妨留言一下答案,来证明下你到底有多水,哈哈哈哈哈刀哈哈哈哈哈哈 第一部分 Python基础篇(80题) 1.为什么学习 ...

  4. Ethical Hacking - GAINING ACCESS(9)

    Server Side Attack Nexpose - Analysing Scan Results and Generating Reports OS and Software Inforatio ...

  5. Bash 脚本编程

    概述 Bash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell. shell语法 变量 定义:your_name="hellohhy" 使 ...

  6. Web应用程序安全与风险

    一.Web应用程序安全与风险 更多渗透测试相关内容请关注此地址:https://blog.csdn.net/weixin_45380284 1.web发展历程 静态内容阶段(HTML) CGI程序阶段 ...

  7. C++的vector的使用方法

    vector c++的vector的使用方法,创建,初始化,插入,删除等. #include "ex_vector.h" #include <iostream> #in ...

  8. python基础--14大内置模块(下)

    (9)正则表达式和re模块(重点模块) 在我们学习这个模块之前,我们先明确一个关系.模块和实际工作的关系. 1)模块和实际工作时间的关系 1.time模块和时间是什么关系?time模块和时间本身是没有 ...

  9. docker时区不正确的问题修改记

    前一阵子有一台服务器,mysql的时间比北京时间晚了8个小时.我知道是时区的问题,但是不知道为什么弄成这样,宿主机没有问题,后来一看mysql的docker,时区是错的. mybatis-plus打印 ...

  10. cmd 安装第三方库问题

    pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 一定要指定 信任豆瓣源,不然就算换了源 ...