bug修复 双指针 跳出循环中的循环

 

https://leetcode.cn/problems/backspace-string-compare/

844. Backspace String Compare
Given two strings s and t, return true if they are equal when both are typed into empty text editors. '#' means a backspace character.

Note that after backspacing an empty text, the text will continue empty.



Example 1:

Input: s = "ab#c", t = "ad#c"
Output: true
Explanation: Both s and t become "ac".
Example 2:

Input: s = "ab##", t = "c#d#"
Output: true
Explanation: Both s and t become "".
Example 3:

Input: s = "a#c", t = "b"
Output: false
Explanation: s becomes "c" while t becomes "b".


Constraints:

1 <= s.length, t.length <= 200
s and t only contain lowercase letters and '#' characters.


Follow up: Can you solve it in O(n) time and O(1) space?

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
func backspaceCompare(s string, t string) bool {
    m, n := len(s), len(t)
    p, q := m-1, n-1
    for p > -1 && q > -1 {
        i := 0
        for p-i > -1 && s[p-i] == '#' {
            i++
        }
        j := 0
        for q-j > -1 && t[q-j] == '#' {
            j++
        }
        p -= 2 * i
        q -= 2 * j
 
        if p < 0 && q < 0 {
            return true
        }
        if p > -1 && q > -1 && s[p] != t[q] {
            return false
        }
        p--
        q--
    }
    return true
}

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import "fmt"
 
func backspaceCompare(s string, t string) bool {
    m, n := len(s), len(t)
    p, q := m-1, n-1
    for p > -1 && q > -1 {
        for {
            i := 0
            for p-i > -1 && s[p-i] == '#' {
                i++
            }
 
            j := 0
            for q-j > -1 && t[q-j] == '#' {
                j++
            }
            // offset #
            u := 0
            for ii := 0; ii < i; ii++ {
                if p-i-ii > -1 && s[p-i-ii] == '#' {
                    u++
                }
            }
 
            v := 0
            for jj := 0; jj < j; jj++ {
                if q-j-jj > 0 && t[q-j-jj] == '#' {
                    v++
                }
            }
            if i+j == 0 {
                break
            }
 
            p -= 2*i + 2*u // TODO 检查u经过的元素 循环中的循环
            q -= 2*j + 2*v
        }
 
        if p > -1 && q > -1 {
            if s[p] == t[q] {
                p--
                q--
                continue
            } else {
                fmt.Println("2--")
                return false
            }
 
        }
        if p == -1 && q == -1 {
            return true
        }
        if (p > -1 && s[p] != '#' && q < 0) || (q > -1 && t[q] != '#' && p < 0) {
            fmt.Println("1--", p, " ", q)
 
            return false
        }
    }
    return true
}

  

  循环中的循环

跳出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
func backspaceCompare(s string, t string) bool {
    skipS, skipT := 0, 0
    i, j := len(s)-1, len(t)-1
    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 {
            if s[i] != t[j] {
                return false
            } else {
                i--
                j--
                continue
            }
        } else if i >= 0 || j >= 0 {
            return false
        } else {
            return true
        }
    }
    return true
}

  

 

 

 

 

posted @   papering  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
历史上的今天:
2019-11-14 内存保护机制及绕过方案——通过覆盖虚函数表绕过/GS机制
2019-11-14 The Art of Picking Intel Registers Intel寄存器的艺术
2018-11-14 Netty in action—Netty中的ByteBuf
2018-11-14 netty/example/src/main/java/io/netty/example/http/snoop/
2018-11-14 页面加载异常 清除浏览器静态文件 js css 缓存 js动态加载js css文件,可以配置文件后辍,防止浏览器缓存
2018-11-14 首先定环节,再定某环节下的细节 数据一致性
2018-11-14 Static Import Constant interface
点击右上角即可分享
微信分享提示