字符串转数字(atoi)
-> 题目描述
String to Integer (atoi)
实现函数 atoi的功能,即将字符串转换为数字。
要求如下:
- 去除字符串前面的空白字符(只考虑空格字符)
- 保留前面的
±
符号 - 字符串后缀包含非数字字符则丢弃
- 如果是不含有任何数字的字符串或起始部分第一个非空白字符不为数字或
±
符合,则返回 0 - 只考虑数字为 32位有符号的数字,超过范围则返回边界值
示例1:
Input: "42"
Output: 42
1
2
2
示例2:
Input: " -42"
Output: 42
1
2
2
示例3:
Input: "4193 with words"
Output: 4193
1
2
2
示例4:
Input: "words and 987"
Output: 0
Explanation: 因为第一个非空白字符不为数字或正负符号,故返回0
1
2
3
2
3
示例5:
Input: "-91283472332"
Output: -2147483648
Explanation: 超过左边界,故返回 -2^31
1
2
3
2
3
javascript:
/**
* @param {string} str
* @return {number}
*/
var myAtoi = function(str) {
};
1
2
3
4
5
6
7
2
3
4
5
6
7
-> 解法
点击查看
/**
* @param {string} str
* @return {number}
*/
var myAtoi = function(str) {
let s = str.trim()
if(s.length ===0)
return 0
let flag = ''
const ret = []
if(s[0]==='-' || s[0] === '+'){
flag = s[0]
}
if(flag !== '')
s = s.substring(1)
for(let i=0; i<=s.length-1;i++){
const num = parseInt(s[i])
if(isNaN(num))
break;
ret.push(num)
}
if(!ret.length)
return 0
s = flag + ret.join('')
return Math.max(-Math.pow(2,31), Math.min(Math.pow(2, 31) - 1, parseInt(s)))
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-> 总结
需要考虑的点以及在条件中都列举了
- 去空格
- 考虑有无正负符号
- 取数字
- 注意大小范围
编辑此页 (opens new window)
更新于: 2019-08-03 10:02