题目描述
回文,英文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; }