231127 刷题日报

这周值班。。多少写道题吧,保持每天的手感。老婆给买了lubuladong纸质书,加油卷。

1. 131. 分割回文串

写个这个吧,钉在耻辱柱上的题。

为啥没写出来:

1. 递归树没画对

        把树枝只看做是1个字母,而且不清楚树枝和节点含义:

        树枝:每次的选择

        节点:剩余下次可以做的选择

231127 刷题日报_第1张图片

231127 刷题日报_第2张图片

2. 递归变量没写对,是水平递增走到底(走到字符串里最后一个字符,收集结果),而不是垂直递增走到底(结果里长度3,即树的深度,收集结果)

显然,这道题是要水平递增来切分字符串

231127 刷题日报_第3张图片

这里i+1错写成start,结果就是:

231127 刷题日报_第4张图片

debug:

start=0 i=0 str=a
start=1 i=1 str=a
start=2 i=2 str=b

collect start=3 result: [a, a, b] 
start=1 i=2 str=ab
start=0 i=1 str=aa
start=1 i=1 str=a
start=2 i=2 str=b

collect start=3 result: [aa, a, b]  // 这里错了,显然结果不应该是凑满3个,而是遍历完一次string 就收集一次结果
start=1 i=2 str=ab
start=0 i=2 str=aab

正确结果:

start=0 i=0 str=a
start=1 i=1 str=a
start=2 i=2 str=b

collect start=3 result: [a, a, b] 
start=1 i=2 str=ab
start=0 i=1 str=aa
start=2 i=2 str=b

collect start=3 result: [aa, b] 
start=0 i=2 str=aab

上面结果中如果 “start=1 i=2 str=ab” str恰好是回文是否会被添加到第二组结果中,答案不会,ab被回溯了(向上removeLast),然后才会找到aa
 

231127 刷题日报_第5张图片

你可能感兴趣的:(算法)