Skip to content

Latest commit

 

History

History
38 lines (38 loc) · 992 Bytes

844比较含退格的字符串.md

File metadata and controls

38 lines (38 loc) · 992 Bytes
func backspaceCompare(s string, t string) bool {
    // 从后往前遍历才能处理退格#
    i, j := len(s) - 1, len(t) - 1
    skipS, skipT := 0, 0
    for i >= 0 || j >= 0 {
        // 先处理退格
        for i >= 0 {
            if s[i] == '#' {
                skipS++; i--
            } else if skipS > 0 {
                skipS--; i--
            } else {
                break
            }
        }
        for j >= 0 {
            if t[j] == '#' {
                skipT++; j--
            } else if skipT > 0 {
                skipT--; j--
            } else {
                break
            }
        }
        // 在不是退格的情况下对比字符
        if i >=0 && j >= 0 && s[i] != t[j] {
            return false
        }
        // 当剩下的两个字符串其中一个为空,另一个不为空时,无法继续比较,返回false
        if (i >= 0) != (j >= 0) {
            return false
        }
        i--; j--
    }
    return true
}