编程训练————回环数(c++)

    技术2022-07-13  135

    编程训练————回环数(c++)

    题目描述

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

    示例 1:

    输入: 121 输出: true

    示例 2:

    输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

    示例 3:

    输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题思路

    如果输入的整数小于零或者非零且被10整除,则说明不为回环数,可直接排除,如果输入的整数为0,则必为回环数,对于剩下的正整数,则利用循环将整数倒转过来,具体步骤可通过定义flag=原整数,i为flag,然后flag=flag/10,定义num=0,令num=num*10+i,当flag=0的时候循环停止,然后将flag与原来的数比较,如果相同则是回环,否则不是。

    具体代码

    #include <iostream> using namespace std; bool solution(int x){ int num=0; if(x<0||(x%10==0&&x!=0)) return false; else { int flag=x; int i=0; while(flag>0){ i=flag%10; flag=flag/10; num=num*10+i; } if(num==x) return true; else return false; } } int main() { int x; cin>>x; bool b=solution(x); cout<<b; return 0; }

    测试结果

    输入:12321 输出:1(true) 输入:-121 输出:0(false) 输入:0 输出:1(true)

    Processed: 0.014, SQL: 9