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

回文字符串:将字符串首位交换后与原字符串一直。例如:noon ==》 noon  ;aabbaa ==> aabbaa

不是回文字符串的  aabdaa ==> aadbaa;

有三种实现方法,这里贴出两种:

#include<iostream>

#include<string>
using namespace std;


bool isPalindrome1(string str){
        int len = str.size();
        int i = 0,j = len - 1;


        while (i < j && str[i] == str[j]){
                i++;
                j--;
        }
        return j <= i;//返回结果这里要注意!
}


bool isPalindrome2(string str){
        string result;
        int len = str.size();
        for(int index = 0;index < len;index++){
                result = str[index]+ result;
        }
        return !result.compare(str);
}

int main(){
        cout<<isPalindrome1("noon")<<endl;
        cout<<isPalindrome1("")<<endl;
        cout<<isPalindrome1("erdter")<<endl;

cout<<isPalindrome2("noon")<<endl;
        cout<<isPalindrome2("")<<endl;
        cout<<isPalindrome2("erdter")<<endl;
        return 0;
}


第三种是取len =str.size()

str[:len//2] == reverse(str[len-len//2:])

reverse函数(自己实现)是字符串首尾交换

猜你喜欢

转载自blog.csdn.net/teacher20133/article/details/78624305