• LeetCode Problem 9:Palindrome Number回文数


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

    Some hints:

    Could negative integers be palindromes? (ie, -1)

    If you are thinking of converting the integer to string, note the restriction of using extra space.

    You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?

    There is a more generic way of solving this problem.

    注意问题要求O(1)空间复杂度,注意负数不是回文数。

    思路1:将输入整数转换成倒序的一个整数,再比较转换前后的两个数是否相等,但是这样需要额外的空间开销

    思路2:每次提取头尾两个数,判断它们是否相等,判断后去掉头尾两个数。

     1 class Solution {
     2 public:
     3     bool isPalindrome(int x) {
     4         
     5         //negative number
     6         if(x < 0)
     7             return false;
     8             
     9         int len = 1;
    10         while(x / len >= 10)
    11             len *= 10;
    12             
    13         while(x > 0)    {
    14             
    15             //get the head and tail number
    16             int left = x / len;
    17             int right = x % 10;
    18             
    19             if(left != right)
    20                 return false;
    21             else    {
    22                 //remove the head and tail number
    23                 x = (x % len) / 10;
    24                 len /= 100;
    25             }
    26         }
    27         
    28         return true;
    29     }
    30 };
  • 相关阅读:
    Hibernate关联映射
    mysql 外键约束
    巩固JavaSE基础--IDEA完成实战项目
    PHP--选择排序
    PHP--冒泡排序
    vscode调试单个PHP脚本文件
    Vscode下调试基于Homestead环境的Laravel框架
    Python Web开发
    Python之UDP编程
    Python之TCP编程
  • 原文地址:https://www.cnblogs.com/fanyabo/p/4183006.html
Copyright © 2020-2023  润新知