JavaScript 整数相关方法(更新中...)

整数相关方法

1. 获取整数位数

let length = 0;
while (num >= 1) {
	num /= 10;
	length++;
}

2. 获取整数各个位数

const num = 1234;
// 个位
let g = Math.floor(num / Math.pow(10, 0)) % 10;
// 十位
let s = Math.floor(num / Math.pow(10, 1)) % 10;
// 百位
let b = Math.floor(num / Math.pow(10, 2)) % 10;
// 千位
let q = Math.floor(num / Math.pow(10, 3)) % 10;
console.log(g, s, b, q); // 4 3 2 1

num < 0,可以先取反,再计算。

相关题目

1. 回文数(LeetCode - 9)

题目描述:

给你一个整数x,如果x是一个回文整数,返回true;否则,返回false

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。

示例 1:

输入:x = 121

输出:true

示例 2:

输入:x = -121

输出:false

解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例 3:

输入:x = 10

输出:false

解释:从右向左读, 为 01 。因此它不是一个回文数。

我的解答:

let isPalindrome = function (x) {
	if (x < 0) return false;
	let num = x;
	let length = 0;
	while (num >= 1) {
		num /= 10;
		length++;
	}
	// console.log('length', length);
	let count = length % 2 === 0 ? length / 2 : (length - 1) / 2;
	// console.log('count', count);
	for (let i = 0; i < count; i++) {
		let font = Math.floor(x / Math.pow(10, length - 1 - i)) % 10;
		let after = Math.floor(x / Math.pow(10, i)) % 10;

		// console.log('font', font);
		// console.log('after', after);

		if (font !== after) return false;
	}
	return true;
};

2. 整数反转(LeetCode - 7)

题目描述:

给你一个 32 位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围[−231, 231 − 1],就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:

输入:x = 123

输出:321

示例 2:

输入:x = -123

输出:-321

示例 3:

输入:x = 120

输出:21

我的解答:

var reverse = function (x) {
	const Max = Math.pow(2, 31) - 1;
	const Min = -Math.pow(2, 31);
	let isNega = false;
	if (x < 0) {
		x = -x;
		isNega = true;
	}
	let num = x;
	let length = 0;
	while (num >= 1) {
		num /= 10;
		length++;
	}
	let stack = [];
	for (let i = 0; i < length; i++) {
		let n = Math.floor(x / Math.pow(10, i)) % 10;
		stack.push(n);
	}
	let res = isNega ? parseInt('-' + stack.join('')) : parseInt(stack.join(''));
	return res >= Min && res <= Max ? res : 0;
};
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火星飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值