回文判断

题目描述

回文,英文palindrome,指一个顺着读和反过来读都一样的字符串,比如madam、我爱我,这样的短句在智力性、趣味性和艺术性上都颇有特色,中国历史上还有很多有趣的回文诗。

那么,我们的第一个问题就是:判断一个字串是否是回文?

思路 : 1.分别从头尾开始扫描,如果字符都相同则为回文,不相同则不是。

      2.从中间开始分别扫描到两边。

1.第一种思路实现代码:

bool IsPalindrome(const char *s, int n){
    if(s==NULL||n<1){
        return false;
    }
    const char *font,*back;
    font = s;
    back = s + n - 1;
     while(font<back){
        if(*font != *back){
            return false;
        }
        ++font;
        --back;
     }
     return true;
}

2.第二种思路实现代码

bool IsPalindrome2(const char *s, int n)
{
     if (s == NULL || n < 1)
     {
         return false;
     }
     const char* first, *second;

     // m定位到字符串的中间位置      
     int m = ((n >> 1) - 1) >= 0 ? (n >> 1) - 1 : 0;
     first = s + m;
     second = s + n - 1 - m;

     while (first >= s)
     {
         if (*first!= *second)
         {
             return false;
         }
         --first;
         ++second;
     }
     return true;
}

 

posted @ 2017-10-28 00:00  im.lhc  阅读(256)  评论(0编辑  收藏  举报