一个简单的算法题:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

PHP实现:


function isPalindrome($s) {
    $s = preg_replace( '/[^a-z0-9]/i', '', $s);
    if(strcasecmp($s,strrev($s)) != 0){
        return false;
    }
    return true;
}

测试用例:


"HEkSPsqs\"?\"3\"?\"rqrPSkEH"  //false

"A man, a plan, a canal: Panama"  //true

涉及知识:

1.正则表达式替换

2.strcasecmp与strrev函数。

也可以用笨办法遍历实现:


function isPalindrome($s) {
$s = preg_replace( '/[^a-z0-9]/i', '', $s);
$s = str_split($s);
$max = count($s)-1;
for($i=0;$i<$max/2;$i++){
  if(strcasecmp($s[$i],$s[$max-$i]) != 0){
   return false;
  }
}
return true;
}
(adsbygoogle = window.adsbygoogle || []).push({});