背景
力扣第八题:字符串转换整数 (atoi)
大致就是给一些字符串转换成整数,超出范围就展示最大最小值,字符串内没数字就展示0.
示例:
输入: s = "42"
输出: 42
输入: s = " -42"
输出: -42
输入: s = "4193 with words"
输出: 4193
很多复杂的解法,最后发现使用一个parseInt()全给解决了。
parseInt()
parseInt() 方法是 JavaScript 中用于解析字符串并返回整数的函数。
parseInt() 方法设计用于将字符串解析为整数。其基本思路是从字符串的开头开始解析,直到遇到非数字字符为止。该方法还支持指定进制作为第二个参数,可以解析不同进制的字符串。
使用方法:
// 基本用法
let intValue = parseInt("123"); // 解析字符串 "123",返回整数 123
// 指定进制
let binaryValue = parseInt("1010", 2); // 解析二进制字符串 "1010",返回整数 10
// 忽略非数字部分
let mixedValue = parseInt("42 years old"); // 解析字符串 "42 years old",返回整数 42
let mixedValue = parseInt(" -0000042"); // 返回-42
// 处理特殊情况
let nanValue = parseInt("hello"); // 无法解析成数字,返回 NaN
运用场景:
- 用户输入验证: 可以用于验证用户输入是否为有效的整数。
- 处理特殊字符串: 当需要从字符串中提取数字部分时,可以使用
parseInt()方法。 - 进制转换: 当需要将不同进制的字符串转换为十进制整数时,可以通过指定第二个参数实现。
- 处理数据: 在处理数据时,有时需要将字符串表示的数字转换为整数进行计算。
请注意,parseInt() 方法在解析无法转换为数字的字符串时会返回 NaN。
解题答案
/**
* @param {string} s
* @return {number}
*/
var myAtoi = function(s) {
let res = parseInt(s, 10)
if (isNaN(res)) {
return 0;
} else if (res < -Math.pow(2, 31) || res > Math.pow(2, 31) - 1) {
return res < -Math.pow(2, 31) ? -Math.pow(2, 31) : Math.pow(2, 31) - 1;
} else {
return res;
}
};