「比较含退格的字符串」python之leetcode刷题|008
题目
给定 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 只含有小写字母以及字符 '#'。
解答
这道题数退栈和出栈的操作,逻辑有点强。这里先要把两个字符串换成没有#的,然后在进行比较即可
class Solution(object): def backspaceCompare(self, S, T): """ :type S: str :type T: str :rtype: bool """ s = '' t = '' for i in S: if i == '#': if s: s = s[:-1] else: s += i for j in T: if j == '#': if t: t = t[:-1] else: t += j return s==t
这里一定要加判断是否字符串s,t为空,因为如果没有这个判断,假如输入的字符串第一个元素为#,x下面执行的代码就要报错。
看一下执行结果
再看一下排名靠前的代码
class Solution(object): def backspaceCompare(self, S, T): """ :type S: str :type T: str :rtype: bool """ s1 = [] s2 = [] for i in S : if i == '#' : if s1 : s1.pop() else : s1.append( i ) for i in T : if i == '#' : if s2 : s2.pop() else : s2.append( i ) return ''.join(s1 ) == ''.join( s2 )
这个逻辑更好理解。不说了,继续练习去。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
最最最常见的Java面试题总结——第二周
String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的? String和StringBuffer、StringBuilder的区别 可变性 String类中使用字符数组:private final char value[]保存字符串,所以String对象是不可变的。StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串,char[]value,这两种对象都是可变的。 线程安全性 String中的对象是不可变的,也就可以理解为常量,线程安全。AbstractStringBuilder是StringBuilder与StringBuffer的公共父类,定义了一些字符串的基本操作,如expandCapacity、append、insert、indexOf等公共方法。StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。StringBuilder并没有对方法进行加同步锁,所以是非线程安全的...
- 下一篇
区块链开发公司谈区块链与大数据
大数据时代确实给我们带来很多便利这个是不可否认的,但是带来的弊端我们也是不能忽视的。通过等价交换的原则来看,数据显然没有我们所想的那么毫无价值,用这些数据可以做很多我们未曾想过的事情,并且还是在我们不知道的情况下。 长期以来,人们都希望找到一个合理的方式,既可以保护自己的隐私、掌控自己的数据不受别人利用,又可以享受到大型互联网平台所带来的便利和一些应用体验,现在区块链的出现可以将这个需求的两端完美的融洽和解决。在目前的区块链行业中,一个能够满足商业需求并且高效的区块链数据平台是必不可少的。这也是现在投资者想投资让区块链与大数据相结合方面的原因之一。 大数据时代我们的数据被平台通过收集整理分析之后,我们会发现其实这些大数据将会比我们自身还要了解自己。其实这个很容易知道,因为我们也无法准确记住自己每时每刻在做什么事情,但是通过这些智能设备或平台却能准确的记录下来。 我们不能小看这些数据的价值,单个数据不能体现出什么有效的直接价值,但是大量数据整合分析后,产生的联动性,那时候的数据能够产生让我们都难以想象的价值,它们会从中发现一些必然的规律,而这些规律就是价值的体现。 区块链技术的出现使智能...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Hadoop3单机部署,实现最简伪集群
- MySQL8.0.19开启GTID主从同步CentOS8