9. Palindrome Number[E]回文数

题目

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example1:
Input:121
Output:true
Example2:
Input:-121
Output:flase


C++思路

C++知识

回文判断方法:

  1. 将数字逆序,并与原数字比较,查看是否一致
  2. 将数字后半部分逆转,将其与前半部分数字比较,查看是否一致。

    思路1

    将数字全部逆转,与原数字比较。
bool isPalindrome(int x){
  if(x < 0) //所有的负数都不是回文数
    return false;
  long a = 0;
  int b = x;
  while(b!=0){
    a = a * 10 + b % 10;
    b /= 10;
  }
  if(a == x)
    return true;
  else
    return false;
}

思路2

逆转一半的数字,那么问题来了,如何判断已经逆转到数字的一半呢?由于对于原数字是除以10,对于逆转的数字是乘以10,如果原来的数字已经小于新生成的数字,那么就表明已经到达数字的一半。此外还要分奇偶讨论,假设a是新生成的数字,b是原数字,则

  • 如果是奇数,则判断a/10 == b
  • 如果是偶数,直接判断 a == b
bool isPalindrome(int x){
  //特殊情况
  if(x < 0 || (x % 10 ==0 && x!=0)){
  return 0
  }
  long a = 0;
  int b = x;
  while(a < b){
    a = a * 10 + b % 10;
    b /= 10;
  }
  return b = =a || b ==a/10;
}

python思路

思路1

转换成字符串的分片处理

def isPalindrome(self, x):
  b = str(x)
  converNum = b[::-1]
  return converNum == b

思路2

同C++思路1

def isPalindrome(self, x):
  if(x < 0):
    return False
  reverseNum = 0
  m = x
  while m > 0:
    reverseNum = reverseNum * 10 + m %10
    m = m//10
  return reverseNum == x

猜你喜欢

转载自www.cnblogs.com/Jessey-Ge/p/10993443.html
今日推荐