判断回文
解释
回文串的定义:正者读和反者读一样
比如 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; } };