zoukankan      html  css  js  c++  java
  • 9. 回文数

    题目:

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

    示例 1:

        输入: 121
        输出: true
    

    示例 2:

        输入: -121
        输出: false
        解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
    

    示例 3:

        输入: 10
        输出: false
        解释: 从右向左读, 为 01 。因此它不是一个回文数。
    

    ★ 进阶:

    你能不将整数转为字符串来解决这个问题吗?

     

    解法:

    • 数学法

     1 # 全反转
     2 class Solution:
     3     def isPalindrome(self, x):
     4         if x<0 or (x != 0 and x%10 == 0):
     5             return False
     6 
     7         y, rev = x, 0
     8         while y>0:
     9             rev = rev*10 + y%10
    10             y //= 10
    11         return rev == x
    12 
    13 
    14 # 半反转(改进方法)
    15 class Solution:
    16     def isPalindrome(self, x):
    17         if x<0 or (x != 0 and x%10 == 0):
    18             return False
    19 
    20         y, rev = x, 0
    21         while y>rev:                  # 只需要改临界点, 
    22             rev = rev*10 + y%10
    23             y //= 10
    24         return y == rev or (y == rev//10)
    View Code
    • 字符串法

     1 # 全反转
     2 class Solution:
     3     def isPalindrome(self, x):
     4         return str(x) == str(x)[::-1]
     5 
     6 
     7 # 半反转(改进方法)
     8 class Solution:
     9     def isPalindrome(self, x):
    10         x = str(x)
    11         return x[:len(x)//2] == x[:-(len(x)//2)-1:-1]
    View Code
    • 延伸知识点

     ★★★  如有问题,欢迎指正:raykindle@163.com  ★★★

  • 相关阅读:
    hdu 1028 Ignatius and the Princess III (n的划分)
    CodeForces
    poj 3254 Corn Fields (状压DP入门)
    HYSBZ 1040 骑士 (基环外向树DP)
    PAT 1071 Speech Patterns (25)
    PAT 1077 Kuchiguse (20)
    PAT 1043 Is It a Binary Search Tree (25)
    PAT 1053 Path of Equal Weight (30)
    c++ 常用标准库
    常见数学问题
  • 原文地址:https://www.cnblogs.com/raykindle/p/12530871.html
Copyright © 2011-2022 走看看