一个简单的算法题:给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
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({});
来源:https://www.02405.com/archives/1926