美文网首页
iOS算法系列(二)--回文整数

iOS算法系列(二)--回文整数

作者: 乐一游 | 来源:发表于2018-08-25 19:00 被阅读0次

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

特别说明:LeetCode上此题认为-123 倒过来是123-不是回文数,我感觉因为不是字符串,有待商榷,那我们就不考虑负数的情况。

思路:
1:如果是正整数不考虑字符串的情况下,那我们应该会想到把正整数反转输出对比原数据,如果相等就是回文数,关于数字反转,请参考我的iOS算法系列(一)--数字反转
2:如果我们在考虑优化的话,那我们只需要反转一半的数字即可,比如:456654,我们反转后三位得到456,剩下的三位为456。即可得到次数为回文数。
3:那如何判断正好反转了一半呢,就用反转的后的数字10和剩下未反转的数字进行大小比较,如果大于剩下的那就是反转一半了,比如1221,第一次反转得到的数字为1,那么110=10, 10<122,继续反转,12*10 = 120, 120 >12,那么代表已经转了一半。
3:那上面考虑的是偶数位的情况,如果是奇数位的话,也可以使用。
4:最后因为我们不知道到底是奇数位还是偶数位,我们需要用一个或状态来返回两种可能的情况

代码如下,已经下Xcode上编译运行,并输出正确结果

-(BOOL)isPalindrome:(NSInteger)paraInt
{
    //小于10不是回文数
    if (paraInt <= 10)
    {
        return NO;
    }
//我们拿反转数求模剩余的数字进行比较,反转一半的数就可以,如果是奇数的话,我们只需要把他去除掉即可
    NSInteger temp = 0;
    while (temp * 10 < paraInt)
    {
        temp = paraInt % 10 + temp * 10;
        paraInt /= 10;
    }
    return temp == paraInt || temp/10 == paraInt;
}

相关文章

  • iOS算法系列(二)--回文整数

    难易度:易题目:判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 特别说明...

  • BAT面试算法进阶(8)- 删除排序数组中的重复项

    BAT面试算法进阶(7)- 反转整数BAT面试算法进阶(6)- BAT面试算法进阶(6)-最长回文子串(方法二)...

  • 文章收藏

    iOS面试题系列之常见算法 排序算法整理 字符串【3】最长回文子串【3】最长无重复子串【1*】字符串转数字【4】K...

  • Java实现每日一道算法面试题(12):leecode9 回文数

    1.算法题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1:...

  • 算法---判断整数是否是回文整数

    判断一个整数是否是回文整数

  • LeetCode-Algorithms-9.Palindrome

    1. 题目描述: 2.算法思路: 我们可以把整数本身反转,将反转后的数字和原始整数进行比较,如果相同就是回文数。但...

  • 整数二分查找原理及代码模板

    1.整数二分算法原理 ps:数组具有单调性,则一定可以使用整数二分算法;但是,能够使用整数二分算法的数组,数组未必...

  • 9. 回文数

    一、题目原型: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 二、题目...

  • 234. 回文链表问题

    最近做了很多回文Palindrome问题,这里记录一下。 1. 回文整数 在这个之前,做了一个回文整数问题。对于回...

  • 9. 回文数

    一、题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 二、解答 2....

网友评论

      本文标题:iOS算法系列(二)--回文整数

      本文链接:https://www.haomeiwen.com/subject/rfigiftx.html