21xrx.com
2024-05-20 16:44:40 Monday
登录
文章检索 我的文章 写文章
C++如何判断一个数是否为回文数
2023-07-12 02:44:45 深夜i     --     --
C++ 判断 回文数

回文数是指正序和倒序读都是一样的数。例如121或12321都是回文数,而123不是。在C++中,我们可以采用以下方法判断一个数是否为回文数。

首先,我们需要将这个数的每一位数字提取出来,存储到一个数组中。我们可以用一个循环来实现这个过程。具体地,设数字x共有n位,则我们可以将x%10得到最低位,然后将x/10,去掉最低位,重复这个过程n次,即可将x每一位数字存储到数组中。

接下来,我们需要判断所得到的数组是否为回文数。为了判断,我们可以用两个指针来检查数组的首尾元素。具体地,我们设数组为a,指针i指向数组的第一个元素,指针j指向数组的最后一个元素。然后,我们比较a[i]和a[j]是否相等。如果它们不相等,说明这个数不是回文数;如果它们相等,我们将i向右移动一位,将j向左移动一位,继续比较它们所指向的元素,直到两个指针相遇或者i>j为止。

下面是用代码实现的过程:


bool isPalindrome(int x) {

  if(x < 0) return false;

  int digits[10] = {0};  // 设置一个长度为10的数组

  int len = 0;      // 数字x的位数

  while(x) {

    digits[len++] = x % 10; // 将数字的每一位存储到数组中

    x /= 10;

  }

  int i = 0, j = len - 1;   // 设置两个指针

  while(i < j) {

    if(digits[i] != digits[j]) return false; // 不相等时返回false

    i++;

    j--;

  }

  return true;      // 相等时返回true

}

以上就是判断一个数是否为回文数的过程。需要注意的是,如果这个数字是负数,则不是回文数。因为负数的第一位是符号位“-”,与它自己反转后的数字是不相等的。

  
  
下一篇: C++ 排序算法

评论区

{{item['qq_nickname']}}
()
回复
回复