Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
For example,
"A man, a plan, a canal: Panama"is a palindrome.
"race a car"is not a palindrome.
Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.
For the purpose of this problem, we define empty string as valid palindrome.
判断是否是一个回文串,只考虑其中的数字和字母,且忽略大小写。
<?php
function isPalindrome($str) {
$num = strlen($str);
$newStr = strtolower($str);
$onlyNumAndLetter = '';
for ($i = 0; $i < $num; $i ++) {
if (preg_match("/^[a-zA-Z0-9]$/", $newStr[$i])) {
//不区分大小写,所以全部改为小写
$onlyNumAndLetter = $onlyNumAndLetter . $newStr[$i];
}
}
$reverseStr = strrev($onlyNumAndLetter);
print $reverseStr . "\n";
print $onlyNumAndLetter ."\n";
if ($reverseStr === $onlyNumAndLetter) {
return true;
}
return false;
}
$a = "A man, a plan, a canal: Panama";
$b = "race a car";
$ret1 = isPalindrome($a);
print $ret1;
$ret2 = isPalindrome($b);
print $ret2;