之前提交过一个字符串的方式,后来被老大看到了,让我用数学方式。
这不为难人嘛。又不是不知道我数学垃圾。
不写又要扣我绩效。
OK。言归正传。
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
我的思路就是先把最大最小的区间先过一遍。然后依次找每一位。
import React, { useState } from '@alipay/bigfish/react';
import { Button } from '@alipay/bigfish/antd';
const MathNum = () => {
const [number, setNumber] = useState(0)
const reverse = x => {
let num = 0
let temp = 0
let max = 2 ** 31 - 1
let min = -(2 ** 31)
// 验证传入的值是否超过了
if (x > max || x < min) return 0;
while (x !== 0) {
temp = x % 10 // 取最后一位
x = parseInt(x / 10) // 删掉最后一位
num = num * 10 + temp
// num最开始为0
// 0 *10 + 4
// 4 *10 +6
// 依次类推做反转
}
// 反转后是否超过了
if (num > max || num < min) return 0;
setNumber(num)
}
return (
<div>
<Button type="primary" onClick={() => reverse(54564)}>Primary Button</Button>
反转后的值: {number}
</div>
)}
export default MathNum;
可能也是我太菜了吧,能力有限,各位轻喷~