字符串—1003.检查替换后的词是否有效

1003.检查替换后的词是否有效

题目

给你一个字符串 s ,请你判断它是否有效 。
字符串 s 有效需要满足:假设开始有一个空字符串 t = “” ,你可以执行任意次下述操作将 t 转换为 s :
将字符串 “abc” 插入到 t 中的任意位置。形式上,t 变为 tleft + “abc” + tright,其中 t == tleft + tright 。注意,tleft 和 tright 可能为 空 。
如果字符串 s 有效,则返回 true;否则,返回 false。

示例1

输入:s = “aabcbc”
输出:true
解释:
“” -> “abc” -> “aabcbc”
因此,“aabcbc” 有效。

示例2

输入:s = “abcabcababcc”
输出:true
解释:
“” -> “abc” -> “abcabc” -> “abcabcabc” -> “abcabcababcc”
因此,“abcabcababcc” 有效。

示例3

输入:s = “abccba”
输出:false
解释:执行操作无法得到 “abccba” 。

示例4

输入:s = “cababc”
输出:false
解释:执行操作无法得到 “cababc” 。

解题思路

本题和20题有效的括号相似,都可以用栈来解题。如:观察字符串“abcabcababcc”,‘c’就相当于20题的右括号,‘b’和‘a’就相当于左括号,则遍历字符串,遇到‘c’就依次弹出栈顶元素,依次判断是否为‘b’,‘a’,若不是或栈为空就直接返回False,否则遍历遇到‘a’或‘b’就存入栈。最后返回not stack,若最后栈为空,则有效。

代码
class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        stack = []
        for ch in s:
        	if ch == 'c':
        		if not stack or stack.pop() != 'b':
        			return False
        		elif not stack or stack.pop() != 'a':
        			return False
        	else:
        		stack.append(ch)
        return not stack
        

至此,此题解答完毕

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Sublime Text3 中文个人授权版Sublime Text 3 应用技巧和诀窍 1.选择 以下是一些Sublime Text选择文本的快捷键: Command + D 选中一个 Command + L 选中一行 Command + A 全选 Ctrl + Command + M` 选中括号内所有内容 (编写CSS或JS时非常实用) Sublime Text还支持一次选中多行的操作:Furthermore, Sublime Text brings lets us select multiple lines at once, which can significantly boost your productivity. There are several ways to perform this feature: Command 按住Command键再点击想选中的行 Command + Ctrl + G (选中部分文本时) 按此键选中所有相同文本 Command + D (选中部分文本时) 直接选中下一次出现的该文本 2.CSS排序 CSS属性的顺序一般不重要,因为无论何种顺序浏览器都能正确渲染。但排序所有的属性还是有助于代码的整洁。在Sublime Text中,选中CSS属性后按F5就可以按字母顺序排序。 也可以使用 CSSComb 等第三方插件,更详细的控制排序的方法。 3.命令面板(Command Palette) 使用命令面板可以快速完成多重任务。按Command + Shift + P调出面板,键入需要的命令即可。看以下的几个示例: ▼ 重命名文件 ▼ 设置文件为HTML语法 ▼ 插入代码片段 4.主要快捷键列表 在同时打开多个标签页时,可以用以下的热键切换: Command + T 列出所有的标签页 Command + Shift + ] 下一标签页 Command + Shift + [ 上一标签页 Command + Ctrl + P 切换侧边栏显示的工程 Ctrl+L 选择整行(按住-继续选择下行) Ctrl+KK 从光标处删除至行尾 Ctrl+Shift+K 删除整行 Ctrl+Shift+D 复制光标所在整行,插入在该行之前 Ctrl+J 合并行(已选择需要合并的多行时) Ctrl+KU 改为大写 Ctrl+KL 改为小写 Ctrl+D 选 (按住-继续选择下个相同的字符串) Ctrl+M 光标移动至括号内开始或结束的位置 Ctrl+Shift+M 选择括号内的内容(按住-继续选择父括号) Ctrl+/ 注释整行(如已选择内容,同“Ctrl+Shift+/”效果) Ctrl+Shift+/ 注释已选择内容 Ctrl+Z 撤销 Ctrl+Y 恢复撤销 Ctrl+M 光标跳至对应的括号 Alt+. 闭合当前标签 Ctrl+Shift+A 选择光标位置父标签对儿 Ctrl+Shift+[ 折叠代码 Ctrl+Shift+] 展开代码 Ctrl+KT 折叠属性 Ctrl+K0 展开所有 Ctrl+U 软撤销 Ctrl+T 互换 Tab 缩进 自动完成 Shift+Tab 去除缩进 Ctrl+Shift+↑ 与上行互换 Ctrl+Shift+↓ 与下行互换 Ctrl+K Backspace 从光标处删除至行首 Ctrl+Enter 光标后插入行 Ctrl+Shift+Enter 光标前插入行 Ctrl+F2 设置书签 F2 下一个书签 Shift+F2 上一个书签 5.跨文件编辑 同一个编辑操作可以在多个文件中同时重复。举个例子,多个文件中有同一段代码时,可用以下的步骤快速编辑: 按Command + Shift + F在Find框中输入待查找的代码。可按Command + E快速使用选择中的代码段。 在Where框中指定需要查找的文件范围,或填写<open files>表示查找目前打开的文件。 在Replace框中输入要替换成的代码,按Replace按钮批量替换。 6.文件爬虫 按Command + R可以列出文档中所有的CSS选择器。可以选择并立刻跳转查看。这个操作比使用一般的“查找”功能快得多。 7.拼写检查 如果你经常使用Sublime Text从事英文创作,那么启用拼写检查就非常有用处了。选择Preferences > Settings – User菜单,添加以下代码: "spell_check": true, 8.增强侧边栏 SideBarEnhancements插件有效地改进了Sublime Text的侧边栏。安装插件后在侧边栏上点击右键,可以找到一下功能:在资源管理器中打开、建文件、建文件夹、以…打开、在浏览器中打开。 注:在浏览器中打开的热键是F12。 9.更换主题 Sublime Text的外观主题可以更换。Soda Theme就是一个不错的主题,可以在包管理器中安装。 如果要安装的主题并不在在线软件仓库中,也可以手动安装: 下载并解压缩主题包 点击菜单 Preferences > Browse Packages… 把主题文件夹复制到Packages文件夹中. 点击菜单 Preferences > Settings – Users 并加入以下代码:"theme": "Soda Light.sublime-theme"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值