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;
    }

};

结果:

这里写图片描述

总结:

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

Palindrome Partitioning与动态规划

首先看Leetcode上的Palindrome Partitioning题目: Given a string s, partition s such that every substring of...
  • xyzker
  • xyzker
  • 2015年09月24日 11:39
  • 493

LeetCode题解:Palindrome Number

Palindrome Number Determine whether an integer is a palindrome. Do this without extra space. 思路: 题目...
  • MagiSu
  • MagiSu
  • 2013年11月13日 11:22
  • 9135

leetcode之 Palindrome Partitioning I&II

1 Palindrome Partitioning 问题来源:PalindromePartitioning 该问题简单来说就是给定一个字符串,将字符串分成多个部分,满足每一部分都是回文串,请输出所有...
  • yutianzuijin
  • yutianzuijin
  • 2013年11月20日 21:06
  • 13459

1136. A Delayed Palindrome (20)

#include using namespace std; string cutNumber(string N) { size_t i=0; while(N[i]=='0'&&i
  • gl486546
  • gl486546
  • 2017年12月16日 20:24
  • 125

LeetCode131:Palindrome Partitioning

Given a string s, partition s such that every substring of the partition is a palindrome. Retur...
  • u012501459
  • u012501459
  • 2015年07月07日 17:51
  • 928

LeetCode(131)Palindrome Partitioning

题目 Given a string s, partition s such that every substring of the partition is a palindrome. Retu...
  • fly_yr
  • fly_yr
  • 2015年12月28日 13:42
  • 1152

poj(3280)Cheapest Palindrome(区间dp)

题目链接:http://poj.org/problem?id=3280 题意:给出一个由m中字母组成的长度为n的串,给出m种字母添加和删除花费的代价,求让给出的串变成回文串的代价。 ...
  • y990041769
  • y990041769
  • 2014年04月21日 16:27
  • 3354

(Java)-LeetCode-336. Palindrome Pairs

Given a list of unique words. Find all pairs of distinct indices (i, j) in the given list, so that...
  • u012848330
  • u012848330
  • 2016年06月13日 21:06
  • 397

Educational Codeforces Round 2 C.Make Palindrome(贪心)

贪心即可,从a开始取字母,每次取2个字母弄在字符串收尾,若当前前字母只剩一个,在后面找一个单数次数的字母改变,若不存在则为最中间的字母...
  • idealism_xxm
  • idealism_xxm
  • 2016年01月17日 11:59
  • 323

POJ3280--Cheapest Palindrome

题目大意:给出一个长为m的字符串,可以添加删除n个字母,添加和删除的花费不一样。求使字符串变为回文串的最小花费。   分析:状态:dp[i][j]表示将原字符串的子串s[i...j]变为回文串的最...
  • hhhhhhj123
  • hhhhhhj123
  • 2015年08月24日 21:23
  • 273
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCodeOJ_125_Valid Palindrome
举报原因:
原因补充:

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