Skip to content

Two Pointer

双指针算法(Two Pointer Algorithm):

两个指针,分别从数组或链表的头部和尾部开始向中间移动,常可以用来解决数组或链表问题中的多种问题。其中包括:判断是否存在满足某条件的两个数、寻找满足某条件的连续子序列、判断一个字符串是否为回文串以及将一个数组或链表按照某种方式重新排序等。

判断一个字符串是否为回文字符串

思路:

根据左右指针往中心方向遍历每个字符,并依次判断字符是否相等(不符合则return false),当left >= right时结束遍历即可,最后return true。

tip1:

遍历字符的时候,考虑比如中文、表情这样的字符会占据多个字节(byte)。

tip2:

字符串长度的奇偶变化是否存在影响?当为偶数长度,那么左右指针不会重叠,会在相临时结束(不影响);当为奇数长度,(最后一次)取的字符为中心字符两侧的字符,不影响。

tip3:

字符串为空字符串的情况、字符串为一个字符的情况。根据回文字符串的定义,从左至右看与从右至左看字符顺序一样,那么这两个case,都可认为是回文字符串。

Go代码示例


Comments