700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言实现回文数判断

C语言实现回文数判断

时间:2020-11-29 16:51:11

相关推荐

C语言实现回文数判断

C语言实现不使用字符串的整数回文数判断

题目来源:LeetCode题库

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

示例 1:

输入: 121

输出: true

示例 2:

输入: -121

输出: false

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

示例 3:

输入: 10

输出: false

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

进阶:

不将整数转为字符串来解决这个问题

思路:获取输入数值后,需要判断该数值是否是负数,如果是负数则不需要进行其他操作直接返回false,如果不是则将输入的数值进行反转,因为反转后的数值可能会越界导致溢出,所以需要用那个更长的数据类型来接收,使用long类型变量来作为接收反转的数值,最后再将反转后的数值与输入值进行对比。进行反转操作时使用while(y > 0)的好处是:一个可以作为反转操作的结束判断,一个是可以对输入数如果是0的话的,直接就返回true

代码实现:

#include<stdio.h>#include<limits.h>#include <stdbool.h>// 判断是否是回文数_Bool isPalindrome(int x){int y = 0;long tmp = 0;// 输入的是负数,直接返回错误if(x < 0){return false;}y = x;// 输入为0直接返回正确while(y > 0){tmp = tmp * 10 + y % 10;y = y / 10;}return tmp == x ? true : false;}int main(void){int num = 0;_Bool result;printf("\r\n请输入一个数字:");scanf("%d", &num);result = isPalindrome(num);printf("\r\n%d回文数的判断结果为:%d\r\n", num, result);return 0;}

执行用时: 12 ms

内存消耗: 5.3 MB

注意:在LeetCode运行程序需要为long类型变量赋初值,否则会出现错误

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。