题目:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: "A man, a plan, a canal: Panama"
输出: true
示例 2:
输入: "race a car"
输出: false
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/valid-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
注:题目来自于领扣网络
解析:我们首先要了解什么是回文串,“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串
下面我最列出解题中我的想法和步骤
第一次的解法(用时:8ms):
class Solution {
/**
* @param String $s
* @return Boolean
*/
public function isPalindrome($s) {
//1.去掉数字和字母
//2.反转和比较
if (strlen($s) <= 1){
return true;
}
$s = strtolower(preg_replace("/[^A-Za-z0-9]/","",$s));
$compare = strrev($s);
if($compare==$s){
return true;
} else{
return false;
}
}
}
第二次的解法(用时:8ms):
class Solution{
function isPalindrome($s){
$news = preg_replace('/[^a-zA-Z0-9]/','',$s);
$strrev = strrev($news);
return strcasecmp($strrev,$news ) == 0?true:false;
}
}
第三次的解法(用时:8ms):
class Solution{
public function isPalindrome($s){
$s = $this->del($s);
$strrev = strrev($s);
return strcasecmp($strrev,$s)==0?true:false;
}
public function del($s){
return preg_replace('/[^0-9a-zA-Z]/','',$s);
}
}
使用到的函数说明
1.strtolower将字符串的所有字符转化为小写;
2.preg_replace 执行一个正则表达式的搜索和替换
3.strrev 反转字符串
4.strcasecmp比较两个字符串,不区分大小写