LeetCode 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”。

提示:

1 <= s.length, t.length <= 200
s 和 t 只含有小寫字母以及字符 ‘#’

進階:

你可以用 O(n) 的時間復雜度和 O(1) 的空間復雜度解決該問題嗎?

雙指針,兩個指針開始時各自指向兩個字符串尾部,然后向前遍歷即可:

class Solution {
public:bool backspaceCompare(string s, string t) {int sIdx = s.size() - 1;int tIdx = t.size() - 1;int sDelete = 0;int tDelete = 0;while (sIdx >= 0 && tIdx >= 0) {if (s[sIdx] == '#') {--sIdx;++sDelete;continue;}if (t[tIdx] == '#') {--tIdx;++tDelete;continue;}if (sDelete > 0) {--sIdx;--sDelete;continue;}if (tDelete > 0) {--tIdx;--tDelete;continue;}if (s[sIdx] != t[tIdx]) {return false;}--sIdx;--tIdx;}// 以上循環結束時,可能s或t其中一個還沒有遍歷完// s尚未遍歷完,由于t已被遍歷完,因此接下來s中不可以出現刪不掉的字符while (sIdx >= 0) {if (s[sIdx] == '#') {--sIdx;++sDelete;continue;}if (sDelete > 0) {--sIdx;--sDelete;continue;}return false;}while (tIdx >= 0) {if (t[tIdx] == '#') {--tIdx;++tDelete;continue;}if (tDelete > 0) {--tIdx;--tDelete;continue;}return false;}return true;}
};

如果s的長度為n,t的長度為m,則此算法時間復雜度為O(n+m),空間復雜度為O(1)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/921048.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/921048.shtml
英文地址,請注明出處:http://en.pswp.cn/news/921048.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是涌浪電壓

涌浪電壓&#xff08;浪涌電壓&#xff09;是電路或設備在運行時突然出現的、超出額定電壓的瞬時過電壓。它通常由雷擊、電感性負載的斷開、電力系統的故障切換或大型電容性負載的接通等原因引起。涌浪電壓是一種高能量的瞬變干擾&#xff0c;可能損壞電子設備&#xff0c;如擊…

uniapp 優博訊k329藍牙打印機,設置打印機,一鍵打印

設置頁面&#xff1a;<template><view class"pageBg"><u-navbar leftIconColor"#fff" :leftIconSize"28" title"打印設置" bgColor"#3c9cff" :placeholder"true"leftClick"$navigateBack&quo…

pikachu之sql注入

目錄 XX型注入 insert/update注入 delete注入 "http header"注入 基于boolian的盲注 基于時間的盲注 寬字節注入&#xff08;wide byte注入&#xff09; pikachu靶場的字符型注入中xx or 11#可以得到所有用戶的信息。 XX型注入 首先輸入1探測一下。 然后返回…

TLS(傳輸層安全協議)

文章目錄一、核心概念二、為什么需要 TLS/SSL&#xff1f;三、工作原理與詳細流程握手步驟詳解&#xff1a;1.ClientHello & ServerHello&#xff1a;2.服務器認證 (Certificate, ServerKeyExchange)&#xff1a;3.客戶端響應 (ClientKeyExchange, Finished)&#xff1a;4.…

【SpringMVC】SSM框架【二】——SpringMVC超詳細

SpringMVC 學習目標&#xff1a; 1.SpringMVC簡介 1&#xff09;web訪問流程1.web服務器通過瀏覽器訪問頁面2.前端頁面使用異步提交的方式發送請求到后端服務器3.后端服務器采用&#xff1a;表現層—業務層—數據層的架構進行開發4.頁面請求由表現層進行接收&#xff0c;獲取用…

PostgreSQL表膨脹的危害與解決方案

PostgreSQL 的 表膨脹&#xff08;Table Bloat&#xff09; 是數據庫中由于 MVCC&#xff08;多版本并發控制&#xff09;機制導致的一種常見性能問題&#xff0c;表現為物理存儲空間遠大于實際有效數據量。以下是詳細解釋及其危害&#xff1a;一、表膨脹的產生原因 1. MVCC 機…

Elasticsearch面試精講 Day 5:倒排索引原理與實現

【Elasticsearch面試精講 Day 5】倒排索引原理與實現 在“Elasticsearch面試精講”系列的第五天&#xff0c;我們將深入探討搜索引擎最核心的技術基石——倒排索引&#xff08;Inverted Index&#xff09;。作為全文檢索系統的靈魂&#xff0c;倒排索引直接決定了Elasticsearc…

【小白筆記】基本的Linux命令來查看服務器的CPU、內存、磁盤和系統信息

一、 核心概念與命令知識點英文名詞&#xff08;詞源解釋&#xff09;作用與命令CPU (中央處理器)Central Processing Unit&#xff1a;<br> - Central&#xff08;中心的&#xff09;&#xff1a;來自拉丁語 centralis&#xff0c;意為“中心的”。<br> - Process…

51c大模型~合集177

自己的原文哦~ https://blog.51cto.com/whaosoft/14154064 #公開V3/R1訓練全部細節&#xff01; 剛剛&#xff0c;DeepSeek最新發文&#xff0c;回應國家新規 AI 生成的內容該不該打上“水印”&#xff1f;網信辦《合成內容標識方法》正式生效后&#xff0c;De…

CA根證書的層級關系和驗證流程

CA根證書的層級關系和驗證流程&#xff1a;1. 證書層級結構&#xff08;樹狀圖&#xff09; [根證書 (Root CA)] │ ├── [中間證書 (Intermediate CA 1)] │ │ │ ├── [網站證書 (example.com)] │ └── [郵件證書 (mail.example.com)] │ └── [中間證書 (In…

液態神經網絡(LNN)1:LTC改進成CFC思路

從液態時間常數網絡&#xff08;Liquid Time-Constant Networks, LTC&#xff09;到其閉式解版本——閉式連續時間網絡&#xff08;Closed-form Continuous-time Networks, CfC&#xff09; 的推導過程&#xff0c;可以分為以下幾個關鍵步驟。我們將基于你提供的兩篇論文&#…

【圖像處理基石】圖像預處理方面有哪些經典的算法?

圖像預處理是計算機視覺任務&#xff08;如目標檢測、圖像分割、人臉識別&#xff09;的基礎步驟&#xff0c;核心目的是消除圖像中的噪聲、提升對比度、修正幾何畸變等&#xff0c;為后續高階處理提供高質量輸入。以下先系統梳理經典算法&#xff0c;再通過Python實現2個高頻應…

MySQL 多表查詢方法

MySQL 多表查詢方法MySQL 多表查詢用于從多個表中檢索數據&#xff0c;通常通過關聯字段&#xff08;如外鍵&#xff09;實現。以下是常見的多表查詢方式&#xff1a;內連接&#xff08;INNER JOIN&#xff09;內連接返回兩個表中匹配的行。語法如下&#xff1a;SELECT 列名 F…

網絡斷連與業務中斷的全鏈路診斷與解決之道(面試場景題)

目錄 1. 網絡鏈路的“命脈”:從物理層到應用層的排查邏輯 物理層:別小看那一根網線 數據鏈路層:MAC地址和交換機的“恩怨情仇” 工具推薦:抓包初探 2. 網絡層的“幕后黑手”:IP沖突與路由迷霧 IP沖突:誰搶了我的地址? 路由問題:數據包的“迷路”之旅 3. 傳輸層與…

英偉達Newton與OpenTwins如何重構具身智能“伴隨式數采”范式

具身智能的“數據饑荒”&#xff1a;行業痛點與技術瓶頸的深度剖析1.1 具身智能的現狀與核心挑戰Embodied AI的落地之路面臨著多重嚴峻挑戰。在算法層面&#xff0c;實現通用智能仍需人類的持續介入&#xff0c;并且從感知到行動的認知映射尚未完全打通。在硬件層面&#xff0c…

STM32HAL 快速入門(十六):UART 協議 —— 異步串行通信的底層邏輯

大家好&#xff0c;這里是 Hello_Embed。在前幾篇中&#xff0c;我們通過環形緩沖區解決了按鍵數據丟失問題&#xff0c;而在嵌入式系統中&#xff0c;設備間的數據交互&#xff08;如單片機與電腦、傳感器的通信&#xff09;同樣至關重要。UART&#xff08;通用異步收發傳輸器…

使用 C 模仿 C++ 模板的拙劣方法

如下所示&#xff0c;準備兩個宏&#xff0c;一個定義類型&#xff0c;一個定義容器大小。 使用時只要先定義這兩個宏&#xff0c;然后再包含容器頭文件就能生成不同類型和大小的容器了。但是這種方法只允許在源文件中使用&#xff0c;如果在頭文件中使用&#xff0c;定義不同類…

flume接收處理器:構建高可用與高性能的數據鏈路

flume接收處理器&#xff1a;構建高可用與高性能的數據鏈路 在大規模數據采集場景中&#xff0c;單點故障和性能瓶頸是兩大核心挑戰。Flume 通過 Sink Group 接收處理器&#xff08;Processor&#xff09; 機制&#xff0c;提供了強大的故障轉移&#xff08;Failover&#xf…

高級Kafka應用之流處理

40 Kafka Streams與其他流處理平臺的差異在哪里&#xff1f; 什么是流處理平臺&#xff1f; “Streaming Systems”一書是這么定義“流處理平臺”的&#xff1a;流處理平臺&#xff08;Streaming System&#xff09;是處理無限數據集&#xff08;Unbounded Dataset&#xff09;…

Custom SRP - LOD and Reflections

1 LOD Groups 場景中對象越多,場景就越豐富,但是過多的對象,也會增加 CPU 和 GPU 的負擔.同時如果對象最終渲染在屏幕上后覆蓋的像素太少,就會產生模糊不清的像素點/噪點.如果能夠不渲染這些過小的對象,就能解決噪點問題,同時釋放 CPU GPU,去處理更重要的對象. 裁剪掉這些對象…