题目描述:
给定一个字符串 s,判断其是否为回文串。只考虑字母和数字字符,可以忽略字母的大小写。
设计思路:
- 首先需要去除字符串中的非字母数字字符,并将所有字母转换为小写(或大写)形式。
- 然后从字符串两端开始比较,如果不相等,则返回 false,否则继续比较。
- 当左右指针相遇时,表示字符串是回文串,返回 true。
程序流程图:
开始
去除 s 中的非字母数字字符,并将字母转为小写形式
初始化左指针 left = 0 和右指针 right = s.length()-1
while left < right do
if s[left] != s[right] then 返回 false
left++
right--
end while
返回 true
结束
代码实现:
class Solution {
public:
bool isPalindrome(string s) {
string temp; //去掉非字母数字字符的字符串
for (int i = 0; i < s.size(); i++) {
if (isalnum(s[i])) temp += tolower(s[i]); //将字母转换为小写
}
int left = 0, right = temp.size()-1;
while (left < right) {
if (temp[left] != temp[right]) return false;
left++;
right--;
}
return true;
}
};
标签:right,false,temp,字母,周三,字符串,left
From: https://www.cnblogs.com/zeyangshuaige/p/17410053.html