leetcode 125.验证回文串
题目描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明: 本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
解题思路
首先把输入的字符串转化一下,这里统一的里面的大写字符转换成小写的,把非字符数字的字符去掉,生成一个新的字符。新的字符串中,定义两个遍历,从两端向中间移动,如果遇到不相同的字符,表示该字符串是一个非回文串。
class Solution {
public:
bool isPalindrome(string s) {
// 把非字母和数字的字符去掉
s = converter(s);
int len = s.size();
if (len == 0){
return true;
}
int left = 0;
int right = len-1;
while (left < right){
if(s[left] != s[right]){
return false;
}
left++;
right--;
}
return true;
}
/*
字符串转换
*/
string converter(string& s){
string str = "";
for(int i=0; i<s.size(); i++){
if('a'<= s[i] && s[i] <='z') {
str += s[i];
}
else if('A' <= s[i] && s[i] <= 'Z'){
str += s[i]+32;
}
else if('0' <= s[i] && s[i] <= '9'){
str += s[i];
}
else{
continue;
}
}
return str;
}
};
欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步