C++回文数的判断

这篇具有很好参考价值的文章主要介绍了C++回文数的判断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.回文数概念

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

例如 121 、 12321 、 45654 等。

2.问题描述

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

3.代码实现

以下提供两种方法思路

(1)方法一:将要判断的数拆分出来存入数组,再用for循环比较对应位置上的数是否一致。

#include<bits/stdc++.h>
using namespace std;

bool isPalindrome(int x) {
    int store[100];  // 用于存储数字的各个位
    int i = 0;  // 初始化位数计数器

    if (x < 0) return false;  // 如果数字为负数,则不是回文数

    // 提取数字的各个位并存储在数组中
    while (x) {
        store[i] = x % 10;  // 将最后一位存储在数组中
        i++;  // 递增位数计数器
        x /= 10;  // 去掉最后一位
    }

    // 通过比较数组的前半部分和后半部分来检查回文数
    for (int j = 0; j < i / 2; j++) {
        if (store[j] != store[i - 1 - j]) {  // 如果位数不匹配
            return false;  // 不是回文数
        }
    }

    return true;  // 如果所有位数匹配,则是回文数
}

int main() {
    int x;
    cin >> x;

    if (isPalindrome(x)) {  // 检查输入的数字是否是回文数
        cout << "True";  // 如果是回文数,则输出"True"
    } else {
        cout << "False";  // 如果不是回文数,则输出"False"
    }
}

(2)方法二:将要判断的数反转后与原始数进行比较。

下图revertedNumber(示例代码中命名为reverseNum)初始化为0,然后将其乘以10再加上x的尾数,如此循环。

当原始数字小于或等于反转后的数字时,就意味着我们已经处理了一半位数的数字了,此时就要结束循环。

c++判断回文数,c++,算法

#include<bits/stdc++.h>  
using namespace std;

bool isPalindrome(int x){  
    if(x < 0 || (x % 10 == 0 && x != 0)){  // 如果数为负数或者以 0 结尾但不是 0 本身,不是回文数
        return false;
    }
    int reverseNum = 0;  // 用于存储数字反转的变量
    while(x > reverseNum){  // 当原始数大于反转后的数时执行循环
        reverseNum = reverseNum * 10 + x % 10;  // 反转原始数
        x /= 10;  // 去掉原始数的最后一位
    }
    return reverseNum / 10 == x || reverseNum == x;  // 返回判断原始数与反转后的数是否相等
}

int main(){  
    int x;  
    cin >> x;  

    if(isPalindrome(x)){  // 检查输入的数字是否为回文数
        cout << "True";  // 如果是回文数,则输出 "True"
    }
    else{
        cout << "False";  // 如果不是回文数,则输出 "False"
    }
}

希望我的文章能够对你有所帮助 ^_^文章来源地址https://www.toymoban.com/news/detail-757532.html

到了这里,关于C++回文数的判断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 判断点在多边形内算法的C++实现

    本篇博客介绍了使用射线法判断点在多边形内部还是外部的算法,并通过C++做了具体实现 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况。该算法的思路很简单,就是从目标点出发引一条射线,看这

    2024年02月12日
    浏览(57)
  • 【计算几何】凸多面体重叠判断算法:GJK 算法详解 & C++代码实现二维情形的凸多边形重叠判断

    GJK 算法是由 Gilbert,Johnson,Keerthi 三位前辈发明的, 用来计算两个凸多面体之间的碰撞检测 ,以及最近距离。 GJK 算法可以在 O ( M + N ) O(M+N) O ( M + N ) 的时间复杂度内,检测出碰撞,算法在每次迭代的过程中,都会优先选择靠近原点的方向,因此收敛速度会很快。算法的证明

    2024年02月08日
    浏览(67)
  • Java 算法篇-链表的经典算法:判断回文链表、判断环链表与寻找环入口节点(“龟兔赛跑“算法实现)

    🔥博客主页: 【 小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍       文章目录         1.0 链表的创建         2.0 判断回文链表说明         2.1 快慢指针方法         2.2 使用递归方式实现反转链表方法         2.3 实现判断回文链表 - 使用快慢指针与反转链表

    2024年02月05日
    浏览(62)
  • c++回文数程序

    题目:从左向右读和从右往左读是完全一样的,这样的数称为“回文数”。像数字在照镜子一样,现在试着求出1~n之间“回文数”的个数。 这一个题目我们可以这样做: 首先,我们来判断一个数是不是回文数。 有了这一步,我们就可以写出程序来了。 我们用一个函数来打包

    2024年02月16日
    浏览(26)
  • P1025 [NOIP2001 提高组] 数的划分———C++(动态规划、DFS)

    将整数 n n n 分成 k k k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如: n = 7 n=7 n = 7 , k = 3 k=3 k = 3 ,下面三种分法被认为是相同的。 1 , 1 , 5 1,1,5 1 , 1 , 5 ; 1 , 5 , 1 1,5,1 1 , 5 , 1 ; 5 , 1 , 1 5,1,1 5 , 1 , 1 . 问有多少种不同的分法。 n , k n,k n , k ( 6 n ≤ 200 6n le

    2024年01月22日
    浏览(37)
  • C++力扣题目131--分割回文串

    131. 分割回文串 给你一个字符串  s ,请你将   s   分割成一些子串,使每个子串都是  回文串  。返回  s  所有可能的分割方案。 回文串  是正着读和反着读都一样的字符串。 示例 1: 示例 2: 提示: 1 = s.length = 16 s  仅由小写英文字母组成 本题这涉及到两个关键问题:

    2024年01月20日
    浏览(37)
  • C++多种解法求最大回文子串

    解法一、暴力法         循环查找字符串中的所有回文子串,时间复杂度O(N3):         第一遍循环,选取开始点 i         第二遍循环,选取结束位置 j         第三遍循环,判断 i-j 是否为回文字符串 解法二、中心扩展法:         从中心向外扩展。分为两种

    2024年02月10日
    浏览(38)
  • 【免费题库】华为OD机试 - 数的分解(Java & JS & Python & C & C++)

    哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持 给定一个正整数 n,如果能够分解为 m(m 1)个连续正整数之和,请输出所有分解中,m最小的分解。 如果给定整数无法分解为连续正整数,则输出字符串\\\"N\\\"。 输入数据为一整数,范

    2024年04月09日
    浏览(44)
  • 力扣第131题 分割回文串 c++ 回溯+简单 动态规划(是否为回文子串)

    131. 分割回文串 中等 相关标签 字符串   动态规划   回溯 给你一个字符串  s ,请你将   s   分割成一些子串,使每个子串都是  回文串  。返回  s  所有可能的分割方案。 回文串  是正着读和反着读都一样的字符串。 示例 1: 示例 2: 提示: 1 = s.length = 16 s  仅由小写

    2024年02月07日
    浏览(46)
  • 代碼隨想錄算法訓練營|第五十六天|392.判断子序列、1035.不相交的线、115.不同的子序列。刷题心得(c++)

    目录 讀題 392.判断子序列 自己看到题目的第一想法 看完代码随想录之后的想法 115.不同的子序列 看完代码随想录之后的想法 392.判断子序列 - 實作 思路 原始思路 代碼隨想錄思路 Code 原始思路 代碼隨想錄思路 115.不同的子序列 - 實作 思路 Code 總結 自己实现过程中遇到哪些困

    2024年02月06日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包