首先解释什么是回文串,大概意思就是一个字符串,反过来与原字符串相同。这里判断字符串是否为回文串我们可以采用双指针的形式,一前一后两个指针向中间靠拢。依次判断字符串是否为回文串。
![](https://i-blog.csdnimg.cn/blog_migrate/8c7069b0abeb155889a9ce58da985247.png)
这道题目是把一个字符数组分为两份,然后跟另外一个字符数组拆分后再叠加,我们只需创建两个字符数组,一个用来接收
![](https://i-blog.csdnimg.cn/blog_migrate/2d5af8154651c6df9b0c3cc55ea40513.png)
另外一个用来接收
![](https://i-blog.csdnimg.cn/blog_migrate/6a5ed13aa67d95c0b095033d106fec6c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c292195ddb214c587a29538723df8267.png)
创建a1和b1字符数组去接收数据,首先判断切割后有没有‘’“+”abc“这种情况的出现,否则进入else循环,在else循环里面通过先对a1赋值上a切割后的前一部分再加上b切割后的后一部分,b1同理,接着就是双指针判断a1和b1其中一个是否为回文串。
接着分析官方的解法
![](https://i-blog.csdnimg.cn/blog_migrate/1db1ae74f9e49360260a5814461cdcce.png)
![](https://i-blog.csdnimg.cn/blog_migrate/3215b26607c0e54b2c4332dd98874cd7.png)
checkSelfPalindrome是用来判断特殊情况的,也就是分割出来一个空字符的情况
checkConcatenation判断切割后是否为回文字符串,切割后必然是a的前半部分加上b后半部分或者b前半部分加上a后半部分。所以通过判断a[left]与b[right]是否相等来解题