首页 > 其他分享 >844 比较含退格的字符串

844 比较含退格的字符串

时间:2022-12-29 00:00:11浏览次数:71  
标签:844 self str 字符串 stack2 stack 退格 stack1

题目 844 比较含退格的字符串

给定 s 和 t 两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回 true 。# 代表退格字符。

注意:如果对空文本输入退格字符,文本继续为空。

示例 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 = "b"
输出:false
解释:s 会变成 "c",但 t 仍然是 "b"。

思路

直接想到了用栈的结构解决,遇到#就弹出元素。
但是要注意的是如果栈为空怎么弹出元素,所以要把所有情况都考虑清楚

  • 栈不空,元素为#(弹出元素)
  • 栈空,元素为# (直接continue循环)
  • 栈不空,元素不为# (append添加)
  • 栈空,元素不为# (append添加)
    后两种情况合并

代码

class Solution:
    def backspaceCompare(self, s: str, t: str) -> bool:
        stack1 = []
        stack2 = []
        for i in s:
            if stack1 != [] and i == "#":
                stack1.pop()
            elif stack1 == [] and i == "#":
                continue
            else:
                stack1.append(i)
        for i in t:
            if stack2 != [] and i == "#":
                stack2.pop()
            elif stack2 == [] and i == "#":
                continue
            else:
                stack2.append(i)
        return stack1 == stack2

优化后的代码

class Solution:
    def get_res(self, str):
        stack = []
        for i in str:
            if stack != [] and i == "#":
                stack.pop()
            elif stack == [] and i == "#":
                continue
            else:
                stack.append(i)
        return stack

    def backspaceCompare(self, s: str, t: str) -> bool:
        return self.get_res(s) == self.get_res(t)

标签:844,self,str,字符串,stack2,stack,退格,stack1
From: https://www.cnblogs.com/edkong/p/17011559.html

相关文章

  • 1047. 删除字符串中的所有相邻重复项
    1047.删除字符串中的所有相邻重复项难度简单472收藏分享切换为英文接收动态反馈给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。......
  • #yyds干货盘点# LeetCode程序员面试金典:二进制数转字符串
    题目:二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。示例1:输入:0.......
  • 力扣每日一题2022.12.28---1750. 删除字符串两端相同字符后的最短长度
    给你一个只包含字符'a','b' 和'c' 的字符串 s ,你可以执行下面这个操作(5个步骤)任意次:   选择字符串s 一个非空的前缀,这个前缀的所有字符都相同。   选择......
  • Java学习之字符串
    /*字符串:字符串就是一系列字符的序列。在java语言中字符串是一对双引号("")括起来的字符序列声明:字符串常量与字符常量不同,字符常量是用单引号(’)括起来的字符,而字符串......
  • oracle 根据逗号拆分字符串一行转多行
    SELECT A.*, REGEXP_SUBSTR(A.PRODUCTNUMS,'[^,]+',1,L)ASPRODUCTNUM,LFROM LG_ZJQH_PRODUCTVALUES_WWDGXA, (SELECTLEVELLFROMDUALCONNECTBYLEVEL<=10......
  • mysql的concat与concat_ws拼接字符串的使用
    concat的使用可以拼接多个字符mysql>selectconcat(name,dept,job)fromt1;+-----------------------+|concat(name,dept,job)|+-----------------------+|jack......
  • shell内置字符串替换
    shell变量赋值语法:使用规则 解释单引号 所见即所得,即输出时会将单引号内的所有內容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,这称为强引用双引号(默认) ......
  • 1750. 删除字符串两端相同字符后的最短长度
    1750.删除字符串两端相同字符后的最短长度给你一个只包含字符'a','b' 和'c' 的字符串 s ,你可以执行下面这个操作(5个步骤)任意次:选择字符串s 一个非空的前缀,这......
  • vue 实现通过字符串关键字符动态渲染 input 输入框
    vue实现通过字符串关键字符动态渲染input输入框今天做一个简单的demo,就是有一个字符串,字符串里面有标识符,前端检测到标识符之后,需要将这个标识符转换成一个input输入框......
  • Python格式化字符串的3种常用方式
    Python格式化字符串的3中方式一:%号​%号格式化字符串的方式从Python诞生之初就已经存在,时至今日,python官方也并未弃用%号,但也并不推荐这种格式化方式。#格式的字符串(......