一、读题和整理做题思路
通过对题目的分析,相信大家第一时间想到的是 将整数转化为字符串。根据题目的标签,还有另一种数学方法来判断回文数,这是不用转化为字符串的进阶玩法。下面是两种不同方法的呈现。
二、将整数转化为字符串
1、介绍snprintf函数
将格式化的数据写入字符串。snprintf格式化类型和可变参数生成字符串,将其复制到s中,并在末尾添加空字符\0.若要写入的字符数(不包括\0)小于n,则正常写入并返回写入的字符数(不包括\0);若要写入的字符数大于等于n,则会截断字符串,只写入n-1个字符并添加\0,返回应该写入的字符数(不包括\0).
2、代码示范
由于转化字符串,所以该方法的时间复杂度为0(N).
三、数学方法判断回文数
1、特殊情况处理:当x为负数,或者x不等于零但个位是零,那么x不是回文数。
2、后转后半部分数字:初始化变量ret为0,用于存储反转后的数字;在while循环中当x大于ret时,ret乘10并加上x的个位数字(x%10).x除以10(x/=10).
3、判断是否为回文数:当x小于ret时,循环结束。此时,如果x等于ret,或者x等于ret除以10(这是针对整数位为奇数的情况,中间的数字不影响回文的判断),那么x是回文数。
4、代码示范
该方法的时间复杂度为O(1) .
9. 回文数 - 力扣(LeetCode)在这里小编把题目链接奉上,可以去试试,能不能想到其他不同的方法。
这里有一段来自Python的超简洁代码:
class Solution:
def isPalindrome(self, x: int) -> bool:
return str(x) == str(x)[::-1];
都看到这里了,点个赞不过分吧。本期内容分享到这里了,我们下期见。