原题链接:leetcode8
题目描述:将字符串转为32位有符号整数
思路:将字符串转为整数,如果遇到字符的话就不进行转换
根据题目中给定的规则一条一条实现
/**
* @param {string} s
* @return {number}
*/
var myAtoi = function(s) {
let res = 0
let flag = true //标记正负数 true 是正
// 去掉前后空白字符
s = s.trim()
for (let i = 0; i < s.length; i++) {
// 处理第一位,第一位 可能是一个数值,可能是- 可能是+
if (i == 0 && s[i] == '-') {
flag = false
} else if (i == 0 && s[i] == '+') {
flag = true
}
// 其他位的数值
else if (s[i] >= '0' && s[i] <= '9') {
res = res * 10 + (s[i] - 0)
} else {
break
}
}
res = flag ? res : -res
//超出32位要进行截取
if (res > Math.pow(2, 31) - 1) {
return Math.pow(2, 31) - 1
}
if (res < Math.pow(-2, 31)) {
return Math.pow(-2, 31)
}
return res
};