回文串是指以中心对称的字符串,即以中心字符对折,前后元素对应相等。基于此定义,可采用双指针方法,分别指向字符串的起始和末尾元素,然后进行比较,若不等则返回false,若相等则同时向中间移动。当左指针大于等于右指针时结束比较,若此前元素均对应相等,则返回true。(左右指针相等时说明原字符串为奇数串,而最中间元素是共有的,故无需再比较,直接返回true)
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param str string字符串 待判断的字符串 * @return bool布尔型 */ bool judge(string str) { // write code here int len=str.length();//长度 int i=0,j=len-1;//双指针,一个指向第一个元素,另一个指向最后一个元素 if(len==0) return false;//空串返回false while(i<j) {//前后指针同时进行比较并移动 if(str.at(i)==str.at(j)) { ++i; --j; } else return false; } return true; } };