leetcode-844-比较含退格的字符串(用vector取代stack)
题目描述:
给定 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 <= 2001 <= T.length <= 200S和T只含有小写字母以及字符'#'。
要完成的函数:
bool backspaceCompare(string S, string T)
说明:
1. 这道题给定两个字符串S和T,字符串中只含有小写字母和#字符,#字符表示退格键,删除掉前一个字符。要求判断两个字符串经过了退格操作后,是否相同。
比如S=“a#b”,T=“c#b”,经过退格操作后,都只剩下b字符,是相同的字符串。再比如S="#ab#",T=“ab#”,经过退格操作后,只剩下a字符,是相同的字符串。
2. 这道题笔者最开始想着能不能不操作字符串,直接通过计算和判断给实现了。后来发现不太可行,就算是人类来做这道题,也是先做退格操作,得到新的两个字符串,接着比较是否一样。所以还是得操作字符串,删去字符。
笔者最开始想用stack来做,碰到#字符就pop(),十分方便,但stack不好的地方在于,你没办法直接知道stack中的所有字符,还得逐个top()和pop()。
如果使用vector来做,同样可以碰到#字符就pop_back(),正常字符就push_back(),而且vector还可以直接读取,快速地比较两个vector是否相同。
最终采用了vector来做,代码如下:
bool backspaceCompare(string S, string T)
{
vector<char>v1,v2;
for(char element:S)//处理S中的所有字符,结果存储在v1中
{
if(element!='#')
v1.push_back(element);
else
{
if(!v1.empty())
v1.pop_back();
}
}
for(char element:T)//处理T中的所有字符,结果存储在v2中
{
if(element!='#')
v2.push_back(element);
else
{
if(!v2.empty())
v2.pop_back();
}
}
if(v1!=v2)//判断得到的v1和v2是否相同
return false;
return true;
}
vector基本上可以取代stack啦!
上述代码实测4ms,beats 93.75% of cpp submission。
leetcode-844-比较含退格的字符串(用vector取代stack)的更多相关文章
- LeetCode:比较含退格字符串【844】
LeetCode:比较含退格字符串[844] 题目描述 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = ...
- 【LeetCode题解】844_比较含退格的字符串(Backspace-String-Compare)
目录 描述 解法一:字符串比较 思路 Java 实现 Python 实现 复杂度分析 解法二:双指针(推荐) 思路 Java 实现 Python 实现 复杂度分析 更多 LeetCode 题解笔记可以 ...
- C#LeetCode刷题之#844-比较含退格的字符串(Backspace String Compare)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4030 访问. 给定 S 和 T 两个字符串,当它们分别被输入到空 ...
- [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 ...
- LeetCode--844--比较含退格的字符串(java)
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...
- Q844 比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...
- Leetcode844.Backspace String Compare比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = " ...
- LeetCode844 比较含退格的字符串
题目描述: 给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果. # 代表退格字符. 示例 1: 输入:S = "ab#c", T = ...
- [LeetCode] Backspace String Compare 退格字符串比较
Given two strings S and T, return if they are equal when both are typed into empty text editors. # m ...
随机推荐
- exe怎么找main函数
先说DEBUG版本的命令行EXE main函数有两种,第一种是int main(),第二种是int main(int argc,char* argv[]) 不管哪种只要查找j___p___argc就能 ...
- AlexNet 2012
AlexNet Alexnet是一年一度的ImageNet大型视觉识别挑战赛(ILSVRC)2012年冠军,ILSVRC使用ImageNet的一个子集,分为1000种类别,每种 ...
- [Training Video - 4] [Groovy] String Functions
def x="I like to read books before bed" def temp = x.split(" ") log.info "S ...
- MyBatis 实用篇(二)配置文件
MyBatis 实用篇(二)配置文件 一.全局配置 全局配置:http://www.mybatis.org/mybatis-3/zh/configuration.html <?xml versi ...
- ssh scp命令详解
--查看版本 $ ssh -V OpenSSH_3.9p1, OpenSSL 0.9.7a Feb 19 2003 --用SSH登录到远程主机 localhost$ ssh -l jsmith(用户名 ...
- chrome url protocol 提示配置文件路径
%localappdata%\Google\Chrome\User Data\Default\Preferences 搜索对应的协议名,例如:{"x-github-client": ...
- Java程序设计11——GUI设计与事件处理A
1.GUI设计 Java使用AWT和Swing类完成图形用户界面编程,AWT全称是Abstract Window Toolkit,即抽象窗口工具集,它是Sun最早提供的GUI库,只是这个库功能比较有限 ...
- CSS3: box-sizing & content-box 属性---元素的border 和 padding 影响内容的 width 和 height解决方案
/* 关键字 值 */ box-sizing: content-box; box-sizing: border-box; /* 全局 值 */ box-sizing: inherit; box-siz ...
- ImageUploader卸载教程-Xproer.ImageUploader
1.1. 手动卸载控件-Windows XP 主要步骤如下: 1.关闭所有IE 2.打开cmd 3.进入C:\Windows\System32 4.输入命令regsvr32 -u ImageUploa ...
- jconsole连接远程tomcat
windows(Windows操作系统下的远程监控) 1.编辑文件:在进入到了tomcat中的bin的目录中,进行打开catalina.bat进行编辑文件. 2.添加代码:找到文件中的如下代码 rem ...