对于很长的输入字符串,此代码超出leetcode要求的时间限制了!记一下
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
下面展示一些 内联代码片
。
// leetcode
// An highlighted block
class Solution {
public:
bool isPalindrome(string s) {
int len = s.size();
//判断空串
if(len==0){
return true;
}
//判断" "这样的字符串
int j;
for(j=0;j<len;j++){
if(s[j]== 32){
continue;
}else{
break;
}
}
if(j==len){
return true;
}
string str = "";
//从s里面抽取出来 数字和字母
for(int i=0;i<len;i++){
if(48<=s[i]&&s[i]<=57){//数字
str = str + s[i];
}
if(97<=s[i]&&s[i]<=122){//小写字母
str = str + s[i];
}
if(65<=s[i]&&s[i]<=90){//大写字母
str = str + (char)tolower(s[i]);
}
}
if(!str.size()) return true;
cout<<"str:"<<str<<"#";
//r和str是反顺序的
bool ans = true;
int length = str.size();
char r[length];
for(int i=length-1;i>=0;i--){
r[length-1-i] = str[i];
}
//逐一个字符进行比较
int i;
for(i=0;i<length-1;i++){
if(r[i] == str[i]){
continue;
}else{
ans = false;
break;
}
}
if(i==length-1){
ans = true;
}
return ans;
}
};