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

回文数判断 : C语言

时间:2023-06-06 03:58:49

相关推荐

回文数判断 : C语言

回文数判断 : C语言

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

题目解读: 该题将整数转换为字符串再进行判断较为简单(需要开辟新的内存,存在优化的地方),用数组存储即可。本次考虑如何在不改变类型的情况下,进行回文数判断。

思路解析:

一、 首先考虑临界情况: 负数时必不可能是回文数 ,如 -121 翻转为 121-

为整十倍时不为回文数,因为数的开头不为0,如10 翻转为 01;

二、 其次考虑翻转之后溢出问题 , 如何才能做到翻转后不溢出? 可以想到回文数翻转后相同, 我们可以只考虑后一半翻转是否和前一半相同即可。

以下是例子:

现在关键的地方就在于如何判断已经达到整数长度的一半, 我们可以给reverseNumber 初始化为0, 在给reverseNumber增值时,也将输入的整数x取整10。 即

reverseNumber = reverseNumber * 10 + x % 10;

x /= 10;

当x > reverseNumber 时跳出循环即可(可参见例图)

bool isPalindrome(int num){if(num < 0 || (num % 10 == 0 && num != 0))return false;int reverse = 0;while(num > reverse){reverse = reverse * 10 + num % 10;num /= 10;}return num == reverse || num == reverse / 10; }

测试用例 :10 -> False

12321 -> True

-121 -> False

0 -> True

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