JS逻辑练习

数字反转

/* 
    输入:123
    输出:321

    输入:-123
    输出:-321

    输入:120
    输出:21
*/

const reverse = function (num) {
  /* 
        1.将num转换成string
        2.判断正负,对负号进行删减
        3.让string倒叙
        4.装成number,加上正负
    */
  let result = "";
  // 1.将num转成string
  let str = num.toString();

  // 2.判断正负,对负号进行删减
  str = num < 0 ? str.slice(1) : str;

  // 3.让string倒叙
  for (let i = str.length - 1; i >= 0; i--) {
    result += str[i];
  }

  // 4.转成number,加上正负
  return num < 0 ? -result : +result;
};

console.log(reverse(1234));
console.log(reverse(-1234));
console.log(reverse(12340));

数字反转方式二

const reverse = function (s) {
    第一次
      r 3
      result 3 --> 0 * 10 + 3
      s 12

    第二次
      r 2
      result 32  --> 3 * 10 + 2
      s 1
    
    第三次
      r 1
      result 321  --> 32 * 10 + 1
      s 0
  */
  while (s) {
    const r = s % 10;
    result = result * 10 + r;
    s = (s - r) / 10;
  }

  return result;
};

console.log(reverse(123));
console.log(reverse(-123));
console.log(reverse(120));

两数相加

 /* 
   给定 nums = [2, 7, 11, 15], target = 9
   因为 nums[0] + nums[1] = 2 + 7 = 9
   所以返回 [0, 1]
 */
 const sum = function (nums, target) {
   const res = [];
   for (var i = 0; i < nums.length; i++) {
     for (var j = i + 1; j < nums.length; j++) {
       if (nums[i] + nums[j] === target) {
         res.push(i, j);
       }
     }
   }
   return res;
 };
 console.log(sum([2, 7, 11, 15], 18));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值