脑子有雾,拨不开看不到真正的pattern. 隐隐约约意识到_ 不重要但一直想不到要怎么看。
现在分析一下
- 最左边的
_不重要,start和target都可以直接找到第一个char再做分析. 这里假设l是 用于start的idx,rfortarget - 双方都找到第一个
char的时候,这时候如果两个char不一样说明肯定不可以 - 如果一样 即
start[l] == target[r]:- 如果都是
L意味着l的位置一定得>= r否则无法向左移- 但是这样还有问题,如果向左移动的时候碰到了其他的字母怎么办?
- 如果都是
R意味着l的位置一定得<= r否则无法向右移- 同上,如果向右移动的时候碰到了其他的字母怎么办?
- 如果都是
- 继续向右移动
l和r, 然后重复
这样一遍 loop 下来就能确保 start 和 target 的字母处于相同的顺序且次数都一样。这样一来我们就可以解决上面所提出的问题。因为顺序和次数都一样我们就能保证:
- 向左移动的时候一定不会碰到其他左边的字母,因为他们应该也已经向左移动到属于自己的位置上
- 同上