持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情
🎈算法并不一定都是很难的题目,也有很多只是一些代码技巧,多进行一些算法题目的练习,可以帮助我们开阔解题思路,提升我们的逻辑思维能力,也可以将一些算法思维结合到业务代码的编写思考中。简而言之,平时进行的算法习题练习带给我们的好处一定是不少的,所以让我们一起来养成算法练习的习惯。今天练习的题目是一道比较简单的题目 -> 反转之后的数字和
题目描述
给你一个 非负 整数 num 。如果存在某个 非负 整数 k 满足 k + reverse(k) = num ,则返回 true ;否则,返回 false 。
reverse(k) 表示 k 反转每个数位后得到的数字。
示例 1:
输入:num = 443
输出:true
解释:172 + 271 = 443 ,所以返回 true 。
示例 2:
输入:num = 63
输出:false
解释:63 不能表示为非负整数及其反转后数字之和,返回 false 。
示例 3:
输入:num = 181
输出:true
解释:140 + 041 = 181 ,所以返回 true 。注意,反转后的数字可能包含前导零。
提示:
- 0 <= num <= 10^5
思路分析
首先我们要先理解一下题目的意思,题目会给我们一个整数num,我们需要找到一个整数k,使其满足k + reverse(k) = num,首先我们可以确认如果存在满足条件的k的话,k应该要小于或的与num,所以我们可以在[0-num]之间进行遍历寻找,具体步骤如下:
- 1、编写一个整数反转函数
我们需要对整数进行反转,只需要每次将整数的最后一位取出重新组成即可。
const getReverse = (num)=>{
if(num == 0) return 0;
let res = '';
while(num){
res += num % 10;
num = Math.floor(num / 10);
}
return res;
};
- 2、遍历找到满足条件的k
在[0-num]之间进行遍历寻找,判断是否满足k + reverse(k) = num。
for(let i = 0; i <= num; i++){
if(i + parseInt(getReverse(i)) == num){
return true;
}
}
完整AC代码如下:
AC代码
/**
* @param {number} num
* @return {boolean}
*/
var sumOfNumberAndReverse = function(num) {
const getReverse = (num)=>{
if(num == 0) return 0;
let res = '';
while(num){
res += num % 10;
num = Math.floor(num / 10);
}
return res;
};
for(let i = 0; i <= num; i++){
if(i + parseInt(getReverse(i)) == num){
return true;
}
}
return false;
};
说在后面
🎉这里是JYeontu,喜欢算法,GDCPC打过卡;热爱羽毛球,大运会打过酱油。毕业一年,两年前端开发经验,目前担任H5前端开发,算法业余爱好者,有空会刷刷算法题,平时喜欢打打羽毛球🏸 ,也喜欢写些东西,既为自己记录📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解🙇,写错的地方望指出,定会认真改进😊,在此谢谢大家的支持,我们下文再见🙌。