xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

js ~~ operator All In One

js ~~ operator All In One

js ~~ double bitwise not / js 按位双非运算符

字符串转换成整数

~

js 按位运算符


取整

  1. 正数,向下取整 ✅
// 
~~ 2.1
// 2
~~ 2.9
//2

~~ 0.5;
// 0

  1. 负数,向上取整 ✅
~~ -2.9
// -2
~~ -2.1
// -2

~~ -0.5;
// 0

Math

Math.ceil & Math.floor

Math.ceil(-2.9)
// -2

Math.floor(2.9)
// 2

demo

/**
 * @param {number} num
 * @return {number}
 */
var minimumSum = function(num) {
    const arr = [];
    for(let i = 0; i < 4; i++){
        // ~~ 先取整,% 再取余 ✅
        arr.push(~~num % 10);
        // 除 10, 可能存在小数
        num /= 10;
    }
    // sort 方法会修改数组本身,不需要声明新的存储空间了
    // a - b 生序, 等价于 arr.sort((a,b) => a - b > 0 ? 1 : -1);
    arr.sort((a,b) => a - b);
    // 取最小的两位作为十位;后两位作为个位;
    return 10 * (arr[0] + arr[1]) + arr[2] + arr[3];
};
/**
 * @param {number} num
 * @return {number}
 */
var minimumSum = function(num) {
  const arr = [...`${num}`].map(Number).sort((a,b) => a - b);
  // const arr = [...`${num}`].map(Number).sort((a,b) => a - b > 0 ? 1 : -1);
  return arr[0] * 10 + arr[2] + arr[1] * 10 + arr[3]
};


var minimumSum = function(num) {
  const arr = [...`${num}`].sort((a,b) => a - b);
  return parseInt(`${arr[0]}${arr[2]}`) + parseInt(`${arr[1]}${arr[3]}`)
};

LeetCode 2160. 拆分数位后四位数字的最小和

LeetCode 2160. Minimum Sum of Four Digit Number After Splitting Digits

function minimumSum(num: number): number {
  // 升序,排序
  const arr = [...`${num}`].map(Number).sort();
  // 依次取最小的两个数作为 `十位数`,
  // 依次取最大的两个数作为 `个位数`,
  return (arr[0] * 10 + arr[2]) + (arr[1] * 10 + arr[3]);
};

/*

[...`${132}`].map(Number).sort((a,b) => a - b > 0 ? 1 : -1);
// [1, 2, 3]

[...`${132}`].map(Number).sort((a,b) => a - b);
// [1, 2, 3]

[...`${132}`].map(Number).sort();
// [1, 2, 3]

*/

https://leetcode.com/problems/minimum-sum-of-four-digit-number-after-splitting-digits/
https://leetcode.cn/problems/minimum-sum-of-four-digit-number-after-splitting-digits/

strings add / add strings

// 字符串相加 / 大数相加
const addStrings = function(num1, num2) {
  let res = '';
  let temp = 0;
  const arr1 = num1.split('');
  const arr2 = num2.split('');
  while (arr1.length || arr2.length || temp) {
    // `~~` double bitwise not 双非位运算, 字符串转换成整数
    temp += ~~arr1.pop() + ~~arr2.pop();
    // 字符串相加,要注意先后顺序
    res = (temp % 10) + res;
    // 进位
    temp = temp > 9 ? 1 : 0;
  }
  // console.log('res =', res, typeof res);
  return res === "0" ? res : res.replace(/^0+/, '');
}

~~ double bitwise not 双非位运算, 字符串转换成整数

let s = `3`;
// '3'

~s;
// -4

~~s;
// 3

+s;
// 3

https://leetcode.com/problems/add-two-numbers/

https://leetcode-cn.com/problems/add-two-numbers/

refs

https://www.cnblogs.com/xgqfrms/p/16671318.html



©xgqfrms 2012-2020

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2022-06-22 00:18  xgqfrms  阅读(18)  评论(1编辑  收藏  举报