【一天一道LeetCode】#125. Valid Palindrome

一天一道LeetCode

本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处

(一)题目

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
“A man, a plan, a canal: Panama” is a palindrome.
“race a car” is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

(二)解题

题目大意:判断一个字符串是不是有效的回文字符串。忽略里面除了数字和字母的其他字符。
解题思路:两个指针i和j,i从前往后,j从后往前,碰到p[i]和p[j]都是字母或者数字就比较大小,如果相等就i++,j–反之则返回false

直到i>=j时,说明是有效回文,返回true。

//isalnum()是判断该字符是不是字母或数字
class Solution {
public:
    bool isPalindrome(string s) {
        int len = s.length();
        int i = 0;
        int j = len-1;
        while(i<=j)
        {
            while(!isalnum(s[i])&&i<=j) i++;//直到s[i]为字母或数字为止
            while(!isalnum(s[j])&&i<=j) j--;//直到s[j]为字母或数字为止
            if(i<=j&&tolower(s[i])!=tolower(s[j])) return false;//如果不等就返回false
            i++;j--;//反之就继续比较
        }
        return true;
    }
};

推荐文章

Android java支持绑定服务和活动之间的FIFO数据传输?

Android java支持绑定服务和活动之间的FIFO数据传输?

推荐文章

2008年SSRS报表查看器版本

2008年SSRS报表查看器版本

推荐文章

用java中的socket连接测量网络使用

用java中的socket连接测量网络使用

推荐文章

如何在mvc2中使用jQuery在提交表单之前手动调用表单验证

如何在mvc2中使用jQuery在提交表单之前手动调用表单验证

推荐文章

在JavaScript中使用常量有什么意义?

在JavaScript中使用常量有什么意义?

推荐文章

jsp可靠热部署

jsp可靠热部署

推荐文章

我能在我的网站上用python编写浏览器游戏吗

我能在我的网站上用python编写浏览器游戏吗

推荐文章

如何在android中同时使用BallonItemizedOverlay和双击并长时间点击地图?

如何在android中同时使用BallonItemizedOverlay和双击并长时间点击地图?

推荐文章

如何查看android中的电池使用设置?

如何查看android中的电池使用设置?

推荐文章

如何在移动样板中添加对话框?

如何在移动样板中添加对话框?

推荐文章

Outlook加载项事件C#

Outlook加载项事件C#

推荐文章

HTML中带有xml输入的主细节jqGrid

HTML中带有xml输入的主细节jqGrid

推荐文章

Chrome中的动画跳跃

Chrome中的动画跳跃

推荐文章

编写jquery选择器以选择具有特定模式的类

编写jquery选择器以选择具有特定模式的类

推荐文章

界面生成器-使用布局视图框

界面生成器-使用布局视图框

推荐文章

模式表单中的Autoscroll UITableView

模式表单中的Autoscroll UITableView