Сложность: easy
Даны две строки s и t, верните true, если они равны после ввода в пустые текстовые редакторы. Символ '#' означает клавишу backspace.
Обратите внимание, что после нажатия backspace на пустом тексте, текст останется пустым.
Пример:
Input: s = "ab#c", t = "ad#c"
Output: true
Explanation: Both s and t become "ac".
👨💻 Алгоритм:
1⃣Пройдите по строкам s и t с конца, учитывая символы '#' как backspace и пропуская соответствующие символы.
2⃣Сравнивайте текущие символы из обеих строк, пропуская символы, которые должны быть удалены.
3⃣Если все соответствующие символы совпадают и строки эквивалентны после всех backspace операций, верните true; в противном случае верните false.
😎 Решение:
class Solution {
func backspaceCompare(_ S: String, _ T: String) -> Bool {
var i = S.count - 1, j = T.count - 1
var skipS = 0, skipT = 0
let sArray = Array(S), tArray = Array(T)
while i >= 0 || j >= 0 {
while i >= 0 {
if sArray[i] == "#" {
skipS += 1
i -= 1
} else if skipS > 0 {
skipS -= 1
i -= 1
} else {
break
}
}
while j >= 0 {
if tArray[j] == "#" {
skipT += 1
j -= 1
} else if skipT > 0 {
skipT -= 1
j -= 1
} else {
break
}
}
if i >= 0 && j >= 0 && sArray[i] != tArray[j] {
return false
}
if (i >= 0) != (j >= 0) {
return false
}
i -= 1
j -= 1
}
return true
}
}Ставь 👍 и забирай 📚 Базу знаний