LeetCodeOJ_125_Valid Palindrome

原创 2015年11月18日 21:46:40

答题链接

题目:

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.

Tags Two Pointers String
Similar Problems (E) Palindrome Linked List

分析:

算法流程:
(1)建立两个迭代器,分别指向字符串的头和尾
(2)如果迭代器指向的是非字符字母,则分别向左向右移动迭代器
(3)比较两个迭代器的值,如果不等,则表示非回文,退出循环,否则,继续循环,直到左边的迭代器大于右边的迭代器
注意:
(1)要对其他字符进行处理
(2)设定正确的边界调节(注意string.end指向的是最后一个字符的下一个位置)

代码:

class Solution {
public:
    bool isPalindrome(string s) {
        int flag = 1;
        string::iterator it1 = s.begin();
        string::iterator it2 = s.end();
        while(it1<it2)
        {
           if(!isAlphanumeric(*it1))
           {
             ++it1;
             continue;
           }
           else if(!isAlphanumeric(*(it2-1)))
           {
             --it2;
              continue;
           }
           //判定
           int differ = abs(*it1-*(it2-1));
           if(differ!=0&&differ!=32)
           {
               flag = 0;//表示不是回文
               break;
           }
           else
           {
                ++it1;
                --it2;
           }
        }
        if(flag==0)
           return false;
        else
           return true;
    }


    bool isAlphanumeric(char c)
    {
        if((c<=122&&c>=97)||(c<=90&&c>=65)||(c<=57&&c>=48))
           return true;
        else
           return false;
    }

};

结果:

这里写图片描述

总结:

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

125 Valid Palindrome

之前代码: public class Solution { public boolean isPalindrome(String s) { if(s==null) retur...

Leetcode OJ 125 Valid Palindrome [Easy]

Leetcode OJ 125 Valid Palindrome 题目描述: Given a string, determine if it is a palindrome,considerin...

LeetCode-Easy部分中标签为Two Pointers 125. Valid Palindrome

判断一个字符串是不是`回文` 字符串。首、尾指针分别指向有效字符或数字,一一比较,若过程中出现不等,直接返回false,若两个指针碰头了,表示字符首、尾都相等,返回true。

LeetCode 125 Valid Palindrome(有效回文)(*)

翻译给定一个字符串,确定它是否是回文的,仅仅考虑其中的数字和字符并忽略其他。例如, “A man, a plan, a canal: Pannama” 是回文的。 “race a car” 不是回文的...
  • NoMasp
  • NoMasp
  • 2016-02-02 12:14
  • 2462

LeetCode- 125. Valid Palindrome

DescriptionGiven a string, determine if it is a palindrome, considering only alphanumeric characters...

Leetcode-125 Valid Palindrome

1. 题目 Given a string, determine if it is a palindrome, considering only alphanumeric characters a...

Leetcode 125. Valid Palindrome 回文验证 解题报告

1 解题思想就一个简单的判断一个string里面的字符和数字部分,是否是回文的,不考虑符号和大小写等其实说白了,就首尾指针对比一下就好。。 我代码里面首尾不同的地方时过滤下非字符数字2 原题Given...

【leetcode】125. Valid Palindrome

一、题目描述 Given a string, determine if it is a palindrome, considering only alphanumeric characters a...

LeetCode 125. Valid Palindrome 对撞指针(双索引)

一、题目 Given a string, determine if it is a palindrome, considering only alphanumeric characters and ...

leetcode 125 Valid Palindrome

讲道理,连着做了两个palindrome的题目,挺崩溃的。上一个题目是9题,求整数是否是palindrome,但是没有说不算负数。。。所以第一次提交的时候,还对负数进行了取绝对值之后的判断。同样,在这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)