博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode--9. 回文数
阅读量:6714 次
发布时间:2019-06-25

本文共 958 字,大约阅读时间需要 3 分钟。

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例

输入: 121输出: true输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。复制代码

答案

public boolean isPalindrome(int x) {    if (x<0){        return false;    }    int temp = 0;    int copy = x;    while (x!=0){        int remainder = x%10;        x /= 10;        temp = temp *10 +remainder;    }    return copy == temp;}复制代码

上面代码虽然满分通过,但是还有许多需要改进的部分。

  1. 个位数(而且不等于0),应该直接返回flase
  2. 算法不是最优,可以将x分为两半,反转后半部分,然后直接和前半部分做比较即可。
  3. 我还复制了一次x,占用空间多

完善后的代码

public boolean isPalindrome(int x) {    if (x<0 || (x!=0 && x%10==0)){        return false;    }    int temp = 0;    while (x>temp){        int remainder = x%10;        x /= 10;        temp = temp *10 +remainder;    }    return x == temp/10 || x ==temp;}复制代码

总结

为了将x分为两半,请注意while的条件是x>temp,但是这样会出问题的,比如x=121,会出现x=1,temp=12;那return x ==temp/10就够了吗?如果x=11,则x=1,temp=1,此时return x ==temp/10是行不通的,所以成了return x == temp/10 || x ==temp;

转载地址:http://jtelo.baihongyu.com/

你可能感兴趣的文章
[SQL in Azure] Windows Azure Virtual Machine Readiness and Capacity Assessment
查看>>
关于CCR测评器的自定义校验器(Special Judge)
查看>>
java设计模式之 装饰器模式
查看>>
loadrunner-3-18Service-Level Agreement(服务水平协议)
查看>>
Python编程-基础知识-列表和元组
查看>>
利息力(force of interest)
查看>>
Oracle 角色及其权限
查看>>
NiftyDialogEffects:集成了多种动画效果的Dialog控件
查看>>
《世界是数字的》读后感
查看>>
AD软件原理图封装过程(即由原理图转换到PCB)
查看>>
cocos2d-x lua table与json的转换
查看>>
mysql的基本原理
查看>>
《面向对象分析与设计》——抽象
查看>>
linux学习记录-------jdk安装配置
查看>>
查看dll依赖项
查看>>
koa和egg项目webpack热更新实现
查看>>
ansible普通用户su切换问题
查看>>
2017.10.1
查看>>
P1965 转圈游戏
查看>>
洛谷——P1187 3D模型
查看>>