JS邏輯練習

探魚不是魚發表於2020-11-27

數字反轉

/* 
    輸入: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));

相關文章