844. 比較含退格的字串
給定s
和t
兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。#
代表退格字元。
注意:如果對空文字輸入退格字元,文字繼續為空。
示例 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 <= 200
1 <= t.length <= 200
s
和t
只含有小寫字母以及字元'#'
。
高階:
❝比較直觀的思路是順次掃瞄
s
和t
的每乙個字元,把它們存在列表中:
這樣的解法時間複雜度為 ,空間複雜度也為 。
執行結果:
❝題目的高階要求的時間複雜度是 ,空間複雜度是 。這又是需要把空間複雜度從 降低到 的題目,跟昨天做的 19. 刪除鍊錶的倒數第n個節點一樣,都涉及到了指標。執行結果:通過
執行用時:40 ms, 在所有 python3 提交中擊敗了77.02% 的使用者
記憶體消耗:13.6 mb, 在所有 python3 提交中擊敗了5.32% 的使用者
具體做法是從末尾開始同時遍歷並比較s
和t
的字元:
class solution:
def backspacecompare(self, s: str, t: str) -> bool:
i, j = len(s) - 1, len(t) - 1
skipi = skipj = 0
while i >= 0 or j >= 0:
while i >= 0:
if s[i] == '#':
skipi += 1
i -= 1
continue
if not skipi:
break
i -= 1
skipi -= 1
while j >= 0:
if t[j] == '#':
skipj += 1
j -= 1
continue
if not skipj:
break
j -= 1
skipj -= 1
if i == j == -1:
return true
if i 0 or j 0:
return false
if s[i] != t[j]:
return false
i -= 1
j -= 1
return true
執行結果:
❝執行結果:通過
執行用時:32 ms, 在所有 python3 提交中擊敗了97.75% 的使用者
記憶體消耗:13.5 mb, 在所有 python3 提交中擊敗了10.96% 的使用者
2020.10.19
力扣 844 比較含退格的字串(簡單)
給定 s 和 t 兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。代表退格字元。注意 如果對空文字輸入退格字元,文字繼續為空。示例 1 輸入 s ab c t ad c 輸出 true 解釋 s 和 t 都會變成 ac 示例 2 輸入 s ab t c d 輸出 tru...
力扣 比較含退格的字串
給定 s 和 t 兩個字串,當它們分別被輸入到空白的文字編輯器後,判斷二者是否相等,並返回結果。代表退格字元。注意 如果對空文字輸入退格字元,文字繼續為空。示例 1 輸入 s ab c t ad c 輸出 true 解釋 s 和 t 都會變成 ac 示例 2 輸入 s ab t c d 輸出 tru...
C C 字串為空判斷 效率比較
為了測試判斷字串為空的效率,今天特意做了乙個測試。得出以下結論 cstring s 我是乙個中國人 s.getlength 0 效率略快於 s.isempty 但是 s 0 0 效率比 getlength 低一倍。換成 string 又測了一次 string s.length 2730 毫秒 str...