125. 验证回文串
125. Valid Palindrome
题目:
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
输入: “A man, a plan, a canal: Panama”
输出: true
示例 2:
输入: “race a car”
输出: false
题解:
主要是先转换为小写,再利用正则表达式删除不是数字和字母的字符。
C++
#include<cctype> //tolwer;
#include<algorithm> // transform;
class Solution {
public:
bool isPalindrome(string s) {
transform(s.begin(), s.end(), s.begin(), ::tolower); // 转换为小写
s = regex_replace(s, regex("[^a-z0-9]"), "");// 去除不是字母和数字的字符
int i = 0;
int j = s.size() - 1;
while(i < j && s[i] == s[j]){
i++;
j--;
}
return i >= j;
}
};
Java
class Solution {
public boolean isPalindrome(String s) {
s = s.toLowerCase();// 转换为小写
s = s.replaceAll("[^0-9a-z]", "");// 去除不是字母和数字的字符
int i = 0;
int j = s.length() - 1;
while(i < j) {
if(s.charAt(i) == s.charAt(j)) {
i++;
j--;
}
else {
return false;
}
}
return true;
}
}
Python
class Solution(object):
def isPalindrome(self, s):
"""
:type s: str
:rtype: bool
"""
s = s.lower()
s = re.sub('[^0-9a-z]', '', s) # 去除不是字母和数字的字符
i = 0
j = len(s) - 1
while i < j:
if (s[i] == s[j]):
i += 1
j -= 1
else:
return False
return True
JavaScript
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
var reg = /[^0-9a-z]/g // g表示全局替换,否则只替换第一个
s = s.toLowerCase()
s = s.replace(reg, "") // 去除不是字母和数字的字符
var i = 0
var j = s.length - 1
while (i < j) {
if(s[i] === s[j]) {
i++;
j--;
}
else {
return false;
}
}
return true;
};