zoukankan      html  css  js  c++  java
  • 【LeetCode每天一题】Palindrome Number( 回文数字)

    Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

    Example 1:          Input: 121            Output: true

    Example 2:          Input: -121          Output: false                Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

    Example 3:         Input: 10              Output: false                Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

    Follow up: Coud you solve it without converting the integer to a string?

    思路


          这道题最简单的解决办法是将数字转换成字符串,从头和尾向中间进行遍历。可以得出结果。但是在题中给出了可不可以不适用转化字符的办法来解决。这里我想到了使用辅助空间来解决。 申请一个堆和队列。然后依此将数字加入其中。然后再逐个对比数字是否相等。相等则时回文。时间复杂度为O(log 10 n), 空间复杂度为O(n).

    图示步骤


             

    实现代码


      

     1 class Solution(object):
     2     def isPalindrome(self, x):
     3         """
     4         :type x: int
     5         :rtype: bool
     6         """
     7         if x < 0:                  # 如果数字小于0,直接返回
     8             return False
     9         tem1, tem2 = [], []      # 设置两个辅助列表来模拟栈和队列。
    10         while x:                  # 堆数字进行遍历
    11             tem = x %10
    12             tem1.append(tem)
    13             tem2.append(tem)
    14             x //= 10
    15         i, end = 0, len(tem1)-1     
    16         while i < len(tem1) and end >= 0:  # 队列和栈来依此访问。
    17             if tem1[i] != tem2[end]:
    18                 return False             # 有一个不相等直接返回。
    19             i += 1
    20             end -= 1
    21         return True

     

  • 相关阅读:
    BizTalk2010简介
    各大类库的类工厂
    全国城市三级级联菜单(java+Ajax+jQuery)
    gcc编译系统
    通用排行榜组件
    本地化中文示例代码需求调查
    PortalBasic Java Web 应用开发框架(源码、示例及文档)
    FFLIB 框架
    ORM/IOC框架设计感悟
    个人日记
  • 原文地址:https://www.cnblogs.com/GoodRnne/p/10638543.html
Copyright © 2011-2022 走看看