编程训练————回环数(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%10,然后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)