题目概述:

Determine whether an integer is a palindrome. Do this without extra space.


题目分析:

判断数字是否是回文 例如121、656、3443
方法有很多,正着看和到着看两数相同;当然负数显然不是回文

我的方法:

第一种方法:
由于没有没有看到前面的without extra space。采用的方法是把数字转换为字符串,依次比较最前和最后两个字符是否相同,直到遍历完毕。

/*** 判断一个数字是否是回文数字 Palindrome* 最简单方法数组存储数字每位 判断回文 或依次比较数字left和right */
bool isPalindrome(int x) {char str[20];     //存储数字位数int i,j;int count;        //数字位数//负数肯定不是回文if(x<0) return false;i=0;while(x>0) {str[i]=x%10+'0';i++;x=x/10;}count=i;i=0;j=count-1;while(i<j) {if(str[i]==str[j]) {i++;j--;}else {return false;}}return true;
}

第二种方法:
通过依次比较最高位和最低位数字,然后依次数字降低两位。要点是先计算最高位是多少位。需要注意计算高位时:x=x-(left*result)
例如110011  高位-1 低位-1   110011-100000=10011  10011/10=1001再判断,而%会出现错误。

/*** 判断一个数字是否是回文数字 Palindrome* without extra space. */
bool isPalindrome(int x) {int left,right;    //数字高低位int result;        //计算高位数字int number;if(x<0) return false;//计算最高位result=1;number=x;while(number>=10) {   //注意=10result=result*10;number=number/10;}while(x>0) {left=x/result;    //高位right=x%10;       //低位if(left!=right) {return false;}else {  //同时缩小两位 5005-5*1000=5 x=x-(left*result);     //注意不能是 x=x%(left*result) 1100110011 Runtime Error   result=result/100;x=x/10;}}return true;
}

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" is a palindrome.
"race a car" is not a palindrome.

该题目主要是判断字符串是否是回文,其中仅仅是字母和数字组成,需要删除额外字符。注意:大小写字母可以相同'z'=‘Z’,大写字母转小写字母加32即可。
判读一个字符串是否是回文,一种方法可以将字符串倒置然后和原字符串进行比较。这里采用一种类似字符串翻转的方法,通过从前后两个方向来比较判断是否是回文。
自己AC感觉还行,代码如下:

//自定义函数 判断是否是数字或字母
bool IsNumberAlp(char ch)
{if( (ch<='Z'&&ch>='A') || (ch<='z'&&ch>='a') || (ch<='9'&&ch>='0') ) {return true;}else {return false;}
}//字符串回文判断 包括字母和数字 "aA" 返回True说明不区分大小写
bool isPalindrome(char* s) {int length;      //字符串长度int i,j;char left,right; //比较两个字符//s输出true ""if(s==NULL)return true;length=strlen(s);//数组下标i从前往后遍历 j从后往前遍历i=0;j=length-1;left=0;right=0;while(i<=j){if(IsNumberAlp(s[i])==true) { //字母 数字left = s[i];if(left>='A'&&left<='Z') { //大写字母转小写字母加32(重点)left=left+32;}}else {i++;continue;}if(IsNumberAlp(s[j])==true) {right = s[j];if(right>='A'&&right<='Z') { right=right+32;}}else {j--;continue;}if(left!=right) {return false;} else {i++;j--;}}return true;
}

最后希望文章对你有所帮助,如果文章中有错误或不足之处,还请海涵~
        (By:Eastmount 2015-9-24 凌晨4点   http://blog.csdn.net/eastmount/)

[LeetCode] Palindrome Number Valid Palindrome - 回文系列问题相关推荐

  1. LeetCode第九题—— Palindrome Number(判断回文数)

    题目描述 Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same ...

  2. java 最长回文_【Java】【每日算法/刷穿 LeetCode】5. 最长回文子串(中等)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]5. 最长回文子串(中等) 宫水三叶发布于 今天 12:00 题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 ...

  3. leetcode 1400. 构造 K 个回文字符串

    leetcode 1400. 构造 K 个回文字符串 文章目录 leetcode 1400. 构造 K 个回文字符串 一.题目 1.题目描述 2.基础框架 3.解题思路 一.题目 原题链接:1400. ...

  4. PAT甲级1136 A Delayed Palindrome :[C++题解]回文串和高精度并输出过程

    文章目录 题目分析 题目链接 题目分析 此题和PAT甲级1024 Palindromic Number:[C++题解]回文串和高精度加法 一样.区别是多了输出整个计算过程. 下面是主要知识点. 一个判 ...

  5. LeetCode算法题-Valid Palindrome II(Java实现)

    这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...

  6. Palindrome(插入字符变成回文字符串)

    题目:给定一个字符串,问最少插入多少字符,使字符串变成回文字符串. 思路:X:原字符串 Y:逆字符串 需要插入的字符数=X的长度-(X与Y的LCS的长度)     这里使用了滚动数组,压缩空间,原因: ...

  7. CodeForces - 1326D2 Prefix-Suffix Palindrome (Hard version)(马拉车/回文自动机)

    题目链接:点击查看 题目大意:给出一个字符串,求出截取前缀和后缀后拼接而成的最长回文串,前缀和后缀不能相交 题目分析:题意很简单,思路也不难想,读完题后我尝试性的看了看样例,发现前缀和后缀拼接后如果能 ...

  8. C. Palindrome Basis 完全背包 回文串

    链接:https://codeforces.com/contest/1673/problem/C 对于每个回文串,都有取和不取两种作法,而且数量不做限制,故用完全背包. 设i为回文串,则有状态转移方程 ...

  9. I Love Palindrome String HDU - 6599 回文树+hash

    题意: 输出每个长度下的回文串(这些回文串的左半边也需要是回文串) 题解: 直接套上回文树,然后每找到一个回文串就将他hash. 因为符合要求的回文串本身是回文串,左半边也是回文串,所以它左半边也右半 ...

最新文章

  1. linux控制台界面编程,控制台窗口界面的编程控制(二)
  2. 【JAVA编码专题】深入分析 Java 中的中文编码问题
  3. Facebook 开源 Skip,面向对象+函数式编程语言
  4. 【Verilog HDL】深入理解部分语法规则的本质
  5. python面试题总结(5)--数据类型(字典)
  6. LeetCode 1288. 删除被覆盖区间(lambda排序)
  7. 经典面试题:用typeof来判断对象的潜在陷阱
  8. Qt学习笔记-Qt Graphic View Framework
  9. android开源2016_出版商的选择:2016年顶级开源书籍
  10. java 5 线程 睡眠,Java线程之线程的调度-休眠
  11. js中应用protocol buffer
  12. BNU10782被诅咒的代码
  13. Regularized linear regression(正则化线性回归)----吴恩达机器学习
  14. 歌谷服务套件gms_谷歌gms框架安装器下载-安卓9谷歌服务框架app安装-游戏大玩家...
  15. python 显著性检验_Python SciPy 统计显著性检验(Statistical Significance Tests)
  16. CPP QT实现excel的冻结窗格
  17. KDD cup 2017 高速公路收费站交通流量预测 中文翻译(转载)
  18. 9、Python xlsxwriter模块
  19. 在《王者荣耀》来聊聊游戏的帧同步
  20. 塔望食业洞察|中国有机食品市场研究与发展策略思考

热门文章

  1. oracle comment on的用法
  2. Linux学习 - 文件包处理命令
  3. Day2-数据类型、字符编码、购物车
  4. mysql_常用命令
  5. Computer Network Homework3’ s hard question
  6. kdevelp 导入makefile工程
  7. 聚集索引和非聚集索引[转]
  8. hibernate mysql 映射_Hibernate怎么不用配置mapping就使用数据库表映射实体
  9. 虚拟机无法访问主机mysql_虚拟机linux端mysql数据库无法远程访问的解决办法
  10. Java黑皮书课后题第8章:***8.20(游戏:四子连)两人玩游戏,轮流将有颜色的棋子放在一个六行七列的垂直悬挂网格中。谁先实现一行、一列或者一对角线上有4个相同颜色的棋子。