21xrx.com
2024-12-22 23:14:00 Sunday
登录
文章检索 我的文章 写文章
C++:回文数
2023-07-02 03:02:02 深夜i     --     --
C++ 回文数 编程 算法 循环

回文数是指一个数字正着读和倒着读都是一样的,比如121。在C++中,判断一个数字是否是回文数,可以使用字符串的方法,也可以不用字符串。下面将分别介绍两种方法。

一、使用字符串的方法

使用字符串的方法判断回文数,就是将数字转化为字符串,然后判断这个字符串是否是回文串。具体的方法是:

1.使用to_string()函数将数字转化为字符串。

2.使用reverse()函数将字符串反转。

3.将反转后的字符串与原字符串比较,如果相等,则该数字是回文数。

下面是使用字符串的方法的示例代码:


#include <iostream>

#include <string>

#include <algorithm>

using namespace std;

bool isPalindrome(int x) {

  string s = to_string(x);

  string rs = s;

  reverse(rs.begin(), rs.end());

  return s == rs;

}

int main() {

  int x = 121;

  if (isPalindrome(x))

    cout << "Yes" << endl;

   else

    cout << "No" << endl;

  

  return 0;

}

二、不使用字符串的方法

在不使用字符串的情况下,判断一个数字是否是回文数,可以通过逆转一半数字的方法来实现。具体的方法是:

1.将数字的后半部分逆转。

2.将逆转后的后半部分和原数字的前半部分进行比较,如果相等,则该数字是回文数。

需要注意的是:当数字的位数是奇数时,需要将中间的数字舍去,例如:12321,逆转后是12和123之间的比较。

下面是不使用字符串的方法的示例代码:


#include <iostream>

using namespace std;

bool isPalindrome(int x) {

  if (x < 0 || (x % 10 == 0 && x != 0))

    return false;

  

  int sum = 0;

  while (x > sum) {

    sum = sum * 10 + x % 10;

    x /= 10;

  }

  return x == sum / 10 || x == sum;

}

int main() {

  int x = 121;

  if (isPalindrome(x))

    cout << "Yes" << endl;

   else

    cout << "No" << endl;

  

  return 0;

}

总结:

在C++中判断一个数字是否是回文数,可以使用字符串的方法或者不使用字符串的方法。其中字符串的方法使用to_string()函数将数字转化为字符串,再使用reverse()函数将字符串反转。不使用字符串的方法则是将数字的后半部分逆转后进行比较。在实际的应用中,需要根据实际需要选择合适的方法。

  
  

评论区

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