读书人

给定一个数字如何判断它是不是回文形

发布时间: 2013-01-25 15:55:29 作者: rapoo

给定一个数字,怎么判断它是不是回文形式的?

给定一个数字,例如:1234554321,怎么才能判断这个数是不是回文呢?要求时间复杂度是O(n),空间复杂度是O(1).约定负数和0都不是回文。

如果要求不是空间复杂度是O(1),那可以直接把数字转换成字符串,用sprintf函数,然后判断这个字符串是不是回文。

第一种思路就是把这个数字,比如123321进行反转,然后把反转后的结果和原来的数字进行比较,如果相等那么就说明是这个数字是回文形式,相反则不是,基本思路代码如下:

bool isPalindrome(int x) {  if (x < 0) return false;  int div = 1;  while (x / div >= 10) {    div *= 10;  }          while (x != 0) {    int l = x / div;    int r = x % 10;    if (l != r) return false;    x = (x % div) / 10;    div /= 100;  }  return true;}


读书人网 >编程

热点推荐