判断回文

图片说明

解释

回文串的定义:正者读和反者读一样
比如 a 就是一个、abcba 也是一个回文
对于abcda就不是

题解1

    这个思路很简单,我们直接将这个字符串反转,然后和之前的进行比较,要是相等,就是
    代码
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param str string字符串 待判断的字符串
     * @return bool布尔型
     */
    bool judge(string str) {
        // write code here
        //回文串的定义:正者读和反者读一样
        //比如 a 就是一个、abcba 也是一个回文
        //对于abcda就不是

        //这个思路很简单,我们直接将这个字符串反转,然后和之前的进行比较,要是相等,就是

        string os = str;//先将原始的字符串给os
        reverse(str.begin(),str.end());//再将str反转
        if(os == str)//判断
            return true;
        else
            return false;

    }
};

图片说明

题解2

我们可以对上面进行优化,之间对字符串本身进行比较即可,利用回文的性质,首位两个字符是相等的,最中间一个字符不用比较,有如下方法
先求的整个字符串长度:len
那么首位比较的次数就是: len/2
首尾判断是否相等 str[i] == str[len-i-1]

代如下:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 
     * @param str string字符串 待判断的字符串
     * @return bool布尔型
     */
    bool judge(string str) {
        // write code here

        int len = str.length();
        //需要循环比较len/2次
        for(int i =0; i< len/2; i++)
        {
            if(str[i] != str[len-i-1] )
                return false;
        }
        return true;

    }
};

图片说明