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

力扣 leetcode 844. 比较含退格的字符串

时间:2022-12-01 20:44:05浏览次数:56  
标签:844 false 示例 ++ 力扣 int true 退格

问题描述

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

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

提示:

  • 1 <= s.length, t.length <= 200
  • s 和 t 只含有小写字母以及字符 '#'

进阶:

你可以用 O(n) 的时间复杂度和 O(1) 的空间复杂度解决该问题吗?

示例

示例 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"。

解题思路

本题可以先比较两个字符串 s 和 t 删除字符之后的长度,如果这两个字符串长度不同,直接返回 false 。

class Solution {
public:
    bool backspaceCompare(string s, string t) {
        int a = 0, b = 0;
        for(int i = 0; i < s.size(); i++){
            if(s[i] == '#'){
                a--;
                if(a < 0){
                    a = 0;
                }
            }
            else{
                s[a++] = s[i];
            }
        }
        for(int i = 0; i < t.size(); i++){
            if(t[i] == '#'){
                b--;
                if(b < 0){
                    b = 0;
                }
            }
            else{
                t[b++] = t[i];
            }
        }
        if(a != b){
            return false;
        }
        for(int i = 0; i < a; i++){
            if(s[i] != t[i]){
                return false;
            }
        }
        return true;
    }
};

标签:844,false,示例,++,力扣,int,true,退格
From: https://www.cnblogs.com/greatestchen/p/16942623.html

相关文章

  • 力扣 leetcode 15. 三数之和
    问题描述给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你......
  • 「模拟」找到最近的有相同 X 或 Y 坐标的点(力扣第1779题)
    本题为12月1日力扣每日一题题目来源:力扣第1779题题目tag:模拟题面题目描述给你两个整数 x和 y ,表示你在一个笛卡尔坐标系下的 (x,y) 处。同时,在同一个坐标......
  • 力扣275(jav&python)-H 指数 II(中等)
    题目:给你一个整数数组citations,其中citations[i]表示研究者的第i篇论文被引用的次数,citations已经按照 升序排列 。计算并返回该研究者的h 指数。h指数的定......
  • 力扣02 两数相加
    力扣02两数相加题目:给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形......
  • python-解力扣题【回文数】
    1.题目以及解题代码解题思路:将整数转换成字符串,然后对比反转后的字符串与原字符串对比,相同就返回true ......
  • 力扣15 三数之和
    题目:给你一个整数数组nums,判断是否存在三元组[nums[i],nums[j],nums[k]]满足i!=j、i!=k且j!=k,同时还满足nums[i]+nums[j]+nums[k]==0。请你返......
  • 力扣 leetcode 162. 寻找峰值
    问题描述峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个峰值所在位置即......
  • 力扣 leetcode 153. 寻找旋转排序数组中的最小值
    问题描述已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4......
  • 力扣 leetcode 33. 搜索旋转排序数组
    问题描述整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k......
  • 力扣287(java&python)-寻找重复数(中等)
    题目:给定一个包含 n+1个整数的数组 nums,其数字都在 [1,n] 范围内(包括1和n),可知至少存在一个重复的整数。假设nums只有一个重复的整数,返回 这个重复的数......