leetcode125. 验证回文串
Posted The August
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode125. 验证回文串相关的知识,希望对你有一定的参考价值。
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明: 本题中,我们将空字符串定义为有效的回文串。
示例:
输入: “A man, a plan, a canal: Panama”
输出: true
解释:“amanaplanacanalpanama” 是回文串
提示:
- 1 <= s.length <= 2 * 105
- 字符串 s 由 ASCII 字符组成
思路:
-
首先将字符串s中的大写字母转化为小写字母
-
其次,定义两个变量begin和end,记录字符串的首位置和末位置,然后当begin和end所指的位置上的字符符合题目时,停止,比较字符是否相同,相同继续走直到begin=end时,不同则结束返回false
代码如下:
class Solution
public:
bool is_char(char ch)//判断字符是否为数字或字母
if((ch>='0'&&ch<='9')||(ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z'))
return true;
else
return false;
bool isPalindrome(string s)
int end=s.size()-1;
int begin=0;
for(auto& m:s)
if(m>='A'&&m<='Z')
m+=32;// 将大写字母转化为小写字母
while(begin<end)
while(!is_char(s[begin])&&begin<end)
begin++;//跳过非字母和数字字符
while(!is_char(s[end])&&begin<end)
end--;//跳过非字母和数字字符
if(s[begin]!=s[end])
return false;// 两边不相等返回false
begin++;
end--;
return true;
;
以上是关于leetcode125. 验证回文串的主要内容,如果未能解决你的问题,请参考以下文章