2020 10 19 比較含退格的字串

2021-10-24 22:54:49 字數 2442 閱讀 4829

給定st兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。#代表退格字元。

注意:如果對空文字輸入退格字元,文字繼續為空。

示例 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 = "#a#c"

輸出:true

解釋:s 和 t 都會變成 「c」。

示例 4:

輸入:s = "a#c", t = "b"

輸出:false

解釋:s 會變成 「c」,但 t 仍然是 「b」。

1 <= s.length <= 2001 <= t.length <= 200st只含有小寫字母以及字元'#'

高階:

遍歷字串,若當前字元不為 '#' ,將其壓入棧中,否則彈出棧頂元素,最後比較兩個棧的元素是否一致

class solution:

def backspacecompare(self, s: str, t: str) -> bool:

l1 = ''

l2 = ''

for s in s:

if s == '#':

l1 = l1[:-1]

else:

l1 = l1 + s

for s in t:

if s == '#':

l2 = l2[:-1]

else:

l2 = l2 + s

if l1 == l2:

return true

else:

return false

倒序遍歷字串,原地刪除 '#' 和它之前的字元

乙個字元是否會被刪掉,只取決於該字元後面的退格符,而與該字元前面的退格符無關。因此當我們逆序地遍歷字串,就可以立即確定當前字元是否會被刪掉。

具體地,我們定義 skip 表示當前待刪除的字元的數量。每次我們遍歷到乙個字元:

若該字元為退格符,則我們需要多刪除乙個普通字元,我們讓 skip 加 1;

若該字元為普通字元:

若 skip 為 0,則說明當前字元不需要刪去;

若 skip 不為 0,則說明當前字元需要刪去,我們讓 skip 減 1。

這樣,我們定義兩個指標,分別指向兩字串的末尾。每次我們讓兩指標逆序地遍歷兩字串,直到兩字串能夠各自確定乙個字元,然後將這兩個字元進行比較。重複這一過程直到找到的兩個字元不相等,或遍歷完字串為止。

class solution:

def backspacecompare(self, s: str, t: str) -> bool:

i, j = len(s) - 1, len(t) - 1

skips = skipt = 0

while i >= 0 or j >= 0:

while i >= 0:

if s[i] == "#":

skips += 1

i -= 1

elif skips > 0:

skips -= 1

i -= 1

else:

break

while j >= 0:

if t[j] == "#":

skipt += 1

j -= 1

elif skipt > 0:

skipt -= 1

j -= 1

else:

break

if i >= 0 and j >= 0:

if s[i] != t[j]:

return false

elif i >= 0 or j >= 0:

return false

i -= 1

j -= 1

return true

比較含退格的字串

給定 s 和 t 兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。代表退格字元。示例 1 輸入 s ab c t ad c 輸出 true 解釋 s 和 t 都會變成 ac 示例 2 輸入 s ab t c d 輸出 true 解釋 s 和 t 都會變成 示例 3 輸入...

比較含退格的字串

給定 s 和 t 兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。代表退格字元。題目鏈結 很簡單的思路,利用棧,遍歷字串,凡是碰見不是 的入棧,一旦遇到 且棧不為空的話,就出棧乙個元素。class solution elseif stack.empty chars i ...

比較含退格的字串

比較含退格的字串 題目描述 給定 s 和 t 兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。代表退格字元。示例 1 輸入 s ab c t ad c 輸出 true 解釋 s 和 t 都會變成 ac 示例 2 輸入 s ab t c d 輸出 true 解釋 s 和 ...