带标点的回文串判断

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.

主要是边界的判断,空串认为是回文串

非递归程序

class Solution {
public:
void toa(string &s)
{
  for(int i=0;i<s.size();i++)
  {
    if(s[i]>=‘A‘ &&s[i]<=‘Z‘)
      s[i]=s[i]+32;
  }
}
bool isalpha(char ch)
{
  if((ch>=‘a‘ && ch<=‘z‘)|| (ch>=‘0‘&&ch<=‘9‘))
    return true;
  else
    return false;
}
bool isPalindrome(string s) {
  if(s.size()<=1)
    return true;
  int begin=0;
  int end=s.size()-1;
  toa(s);
  while(begin<=end)
  {
  if(!(isalpha(s[begin])))
    begin++;
  else if((!isalpha(s[end])))
  end--;
  else if(s[begin]==s[end])
  {
  begin++;
  end--;
  }
  else
  {
  return false;
  }
  }
return true;
}
};

递归算法

class Solution {
public:
void toa(string &s)
{
  for(int i=0;i<s.size();i++)
  {
  if(s[i]>=‘A‘ &&s[i]<=‘Z‘)
    s[i]=s[i]+32;
  }
}
bool isalpha(char ch)
{
  if((ch>=‘a‘ && ch<=‘z‘)|| (ch>=‘0‘&&ch<=‘9‘))
    return true;
  else
    return false;
}
bool isPalindrome(string s) {
  if(s.size()<=1)
    return true;
  int begin=0;
  int end=s.size()-1;
  toa(s);

  if(!(isalpha(s[begin])))
    return isPalindrome(s.substr(begin+1,end));

  else if((!isalpha(s[end])))
    return isPalindrome(s.substr(begin,end-1));
  else if(s[begin]==s[end])
  {
    return isPalindrome(s.substr(begin+1,end-1));
  }
  else
  {
    return false;
  }

}
};

网上的测试用例“ab"不成功,但是在vs中可以通过

时间: 2024-10-17 18:53:38

带标点的回文串判断的相关文章

链表回文串判断&amp;&amp;链式A+B

有段时间没有练习了,链表回文串判断用到了栈.链式A+B将没有的项用0补充.链表有没有头节点,及结点和链表的区别,即pNode和pHead. //#include<iostream> //using namespace std; // //class Base { //public: // Base(int j) : i(j) {} // virtual~Base() {} // void func1() { // i *= 10; // func2(); // } // int getValu

Openjudge-计算概论(A)-回文串判断

描述: 任意给定一个非空的字符串,判断其是否是回文串.回文串是指正向看和反向看均相等的串,如AbcDcbA和cDDc.如果是回文串,则输出1,否则,输出0 输入长度不小于1不大于100的字符串输出如果是回文串,输出1如果不是回文串,输出0 样例输入 abcdefghijkjihgfedcba 样例输出 1思路:这题很简单,算是字符串入门题,只要判断是否从前往后扫和从后往前扫一样就得了,输出.提示:这题输入一定要用gets()函数,否则会报错代码如下: 1 #include<stdio.h> 2

回文串判断

  #include <bits/stdc++.h> using namespace std;    int judge_palindrome(string s)  {        string tmp=s;         std::reverse(tmp.begin(), tmp.end());   //tmp 和 t 是  s的翻转      string t(tmp);                          //构造新串 t                        

添加字符判断是否为回文串

题目:给定一个字符串,问是否能通过添加一个字母将其变为回文串. 提要:所有代码皆为C++语言. 看到题,首先想到如何判断回文串 注:回文串添加或删除指定字符一定还是回文串. 对于一个字符串,从左右两端开始,以此判断,直到读取超出字符串中间. 代码如下: #include<iostream> #include<string.h> using namespace std; bool JudgeReverseString(char *str) { //对比对应位置字符是否相同 int l

关于回文串的点点滴滴

还是第一次发博文呢.嗯,最近在尝试每天做一道编程题,当然,我要求自己只能用C语言实现.一方面可增加自己对C函数库的熟悉程度,另一方面也想增加自身的编码经验.毕竟,感觉平时Code的时间严重不够.对于一个职业Coder来说这样肯定不太好嘛! 好吧,回到正题吧.今天的题目内容很常规.就是判断用户输入的字符串是否是一个回文串,当然,难度稍微增加那么点,就是同时能够在一个字符串中找到所有的回文子串同时输出.想必,关于回文串的定义就没什么可说的了吧,比如"abba"就是个回文串,此外,还要能找出

openjudge-回文串判断【递归】

回文串判断 总时间限制: 1000ms 内存限制: 65536kB 描述 任意给定一个非空的字符串,判断其是否是回文串.回文串是指正向看和反向看均相等的串,如AbcDcbA和cDDc.如果是回文串,则输出1,否则,输出0 输入长度不小于1不大于100的字符串输出如果是回文串,输出1如果不是回文串,输出0样例输入 abcdefghijkjihgfedcba 样例输出 1 1 #include <stdio.h> 2 #include<string.h> 3 int fun(char

Valid Palindrome ——判断字符串是否为回文串

本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41488377 Valid Palindrome 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&

Power oj/2610[判断回文串]

题目链接[https://www.oj.swust.edu.cn/problem/show/2610] 题意:给你一个字符串,让你判断这个字符串是不是回文串,字符串的长度是1<len<1e7,内存是4096KB. 题解:首先这1e7个字符是存不下的,1e71024=9765KB>4096kB.那么怎么办?字符串哈希,先对字符串的前半部分进行哈希,然后在对字符串后半部分进行哈希,如果两部分的哈希值相同,那么这个字符串就是回文串. BKDRH哈希,哈希公式为has=has*seed+s[i]

HDOJ/HDU 2163 Palindromes(判断回文串~)

Problem Description Write a program to determine whether a word is a palindrome. A palindrome is a sequence of characters that is identical to the string when the characters are placed in reverse order. For example, the following strings are palindro