这周值班。。多少写道题吧,保持每天的手感。老婆给买了lubuladong纸质书,加油卷。
1. 131. 分割回文串
写个这个吧,钉在耻辱柱上的题。
为啥没写出来:
1. 递归树没画对
把树枝只看做是1个字母,而且不清楚树枝和节点含义:
树枝:每次的选择
节点:剩余下次可以做的选择
2. 递归变量没写对,是水平递增走到底(走到字符串里最后一个字符,收集结果),而不是垂直递增走到底(结果里长度3,即树的深度,收集结果)
显然,这道题是要水平递增来切分字符串
这里i+1错写成start,结果就是:
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