C 库函数:
string长度: s.length(), s.size()
include <ctype.h>
C 库函数 int tolower(int c) 把给定的字母转换为小写字母。
C 库函数 void isalnum(int c) 检查所传的字符是否是字母和数字。
方法一: 利用字符串,反转字符串后比较
class Solution {
public:
bool isPalindrome(string s) {
string s1;
for(auto ch : s){
if(isalnum(ch)){
s1 += tolower(ch);
}
}
string m = s1;
reverse(m.begin(),m.end());
return (m==s1)? true:false;
}
};
方法二: 回文是典型的双指针问题,即不停比较字符串左右两端是否相等,一旦遇到不符合条件的直接跳出即可
class Solution {
public:
bool isPalindrome(string s) {
string s1;
for(auto ch : s){
if(isalnum(ch)){
s1 += tolower(ch);
}
}
int left = 0,right = s1.length()-1;
while(left<right){
if(s1[left]!=s1[right]){
return false;
}
left++;
right--;
}
return true;
}
};
python:
方法一: 利用字符串,反转字符串后比较
isalnum()函数在python中也有,C库函数 string.tolower() 在 python 中为 string.lower()
class Solution:
def isPalindrome(self, s: str) -> bool:
new = ''.join(e for e in s if e.isalnum())
new = new.lower()
return True if new == new[::-1] else False
方法二: 回文是典型的双指针问题,即不停比较字符串左右两端是否相等,一旦遇到不符合条件的直接跳出即可
class Solution:
def isPalindrome(self, s: str) -> bool:
new = ''.join(e for e in s if e.isalnum())
new = new.lower()
left, right = 0, len(new)-1
while left < right:
if new[left] != new[right]:
return False
left += 1
right -= 1
return True
|