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

比较含退格的字符串

时间:2023-08-01 16:44:06浏览次数:22  
标签:示例 Stack 输入 字符串 true 比较 退格

给定 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"。

屎山代码,利用队列

class Solution {
    public boolean backspaceCompare(String s, String t) {
        //使用栈,当读取到#进行pop操作,不是就push
        Stack<Character> queue1 = new Stack<>();
        Stack<Character> queue2 = new Stack<>();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)=='#'){
                //队列没有内容的时候不需要pop
                if(queue1.size()==0){
                    continue;
                }
                queue1.pop();
                continue;
            }
            queue1.push(s.charAt(i));
        }
        for(int i=0;i<t.length();i++){
            if(t.charAt(i)=='#'){
                if(queue2.size()==0){
                    continue;
                }
                queue2.pop();
                continue;
            }
            queue2.push(t.charAt(i));
        }
        return queue1.equals(queue2);
    }
}

标签:示例,Stack,输入,字符串,true,比较,退格
From: https://www.cnblogs.com/xiaochaofang/p/17596931.html

相关文章

  • 联发科MTK6761_MT6762_MT6765安卓核心板参数比较
    联发科HelioP35_MTK6765MediaTekHelioP35MT6765安卓核心板是智能手机的主流ARMSoC,于2018年末推出。它在两个集群中集成了8个ARMCortex-A53内核(big.LITTLE)。四个性能内核的频率高达2.3GHz。集成显卡为PowerVRGE8320,频率高达680MHz。集成内存控制器支持1500MHz或933MHzLPDDR3......
  • C# 中字符串大小写的性能比较
    一般大家在C#中会使用ToLower或者ToUpper两个方法来比较字符串是否相等时忽略字符串的大小写。但其实官方有更好的写法,那就是String.Compare,现在我们一起来比较一下两种方式的性能如何以下是在.net6.0的环境中测试的结果可以很明显的看到无论是CPU还是内存,都是string.compare完胜......
  • 48. 最长不含重复字符的子字符串
    #例如对于arabcacfr,最长不含重复字符的子字符串为acfr,长度为4。deflengthOfLongestSubstring(s="arabcacfr"):defdfs(s,dp):iflen(s)==0:print(dp)returnlen(dp)ifs[:1]indp:print(dp)......
  • 46. 把数字翻译成字符串
    #例如12258一共有5种,分别是abbeh,lbeh,aveh,abyh,lyh。defnumDecodings(s="12258"):defdfs(s,dp):iflen(s)==0:print(dp)returniflen(s)>=2andint(s[:2])<=26:dpcopy=dp.copy()......
  • 《字符串篇》string类进行转换等操作
    C++中的string类用法简介原文链接:https://blog.csdn.net/liitdar/article/details/80498634概述string是C++标准库的一个重要的部分,主要用于字符串处理。c_str(),string转换为char*//方法一:使用c_str()方法,代码(stringsimple.cpp)如下:#include<string>#include<iostream......
  • 左旋字符串
    字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。解法1:用切片和“+”实现 点击查看代码classsolution{publicStringreverseLe......
  • 2800.包含三个字符串的最短字符串-356
    包含三个字符串的最短字符串给你三个字符串a,b和c,你的任务是找到长度最短的字符串,且这三个字符串都是它的子字符串。如果有多个这样的字符串,请你返回字典序最小的一个。请你返回满足题目要求的字符串。注意:两个长度相同的字符串a和b,如果在第一个不相同的字符......
  • 2023-07-31:用r、e、d三种字符,拼出一个回文子串数量等于x的字符串。 1 <= x <= 10^5。 来
    2023-07-31:用r、e、d三种字符,拼出一个回文子串数量等于x的字符串。1<=x<=10^5。来自百度。答案2023-07-31:大体步骤如下:1.初始化一个字符串builder,用于构建结果字符串。2.初始化一个字符变量cur,初始值为'r',用于轮流使用字符'r'、'e'和'd'构建回文串。3.进入循环,直到输入......
  • [NOI2023] 字符串
    对于给出的串\(S\),将其拓展成\(S+\)特殊字符\(+rev(S)\),求出其后缀数组。那么对于一个子串\([l,r]\),合法的必要条件是\(l\)的后缀在后缀数组的排名小于\(r\)的前缀的排名。之所以是必要条件,是因为会记入一些\([l,r]\)是回文串且\(l\)的排名小的情况。具体而言,这......
  • P9482 [NOI2023] 字符串
    P9482[NOI2023]字符串限制长的很像回文串,但是是字典序关系。定睛一看比较的是原串\(s\)的一个后缀的前缀和翻转串\(s'\)的一个后缀的前缀比字典序。直接把\(s'\)拼到\(s\)后面,中间加个分隔符,来一次后缀排序。排名小的后缀字典序比排名大的后缀小。设当前比较的是......