8. String to Integer (atoi)
题目描述
实现atoi
首先忽略前导空白符号
可选正负号
数字
数值越界返回INT_MAX (2^31 − 1) 或者 INT_MIN (−2^31)
其他非法情况一律返回0
思路
感觉就是很多条件然后判断分别处理这样子进行,首先如果是空白就忽略到第一个非空白,然后是可选的正负号,然后数字的话就继续,一旦遇到字母等其他情况就停止。
代码
// todo
最近刚刚好在写正则表达式,然后就试了试用js,没想到意外的很简单,当然正经他想考查的应该是字符串的处理吧,我这里用js就使用了正则表达式来进行匹配和捕获。
javascript版,没有用条件判断,使用正则表达式匹配,以及捕获字符串获得数字部分
/**
* @param {string} str
* @return {number}
*/
var myAtoi = function(str) {
var p = /^[ ]*([\+|\-]?[0-9]+)/;
var result = 0;
const r = p.exec(str);
if (r != null) {
result = Number(r[1]);
}
if (result < -2147483648) {
result = -2147483648;
}
if (result > 2147483647) {
result = 2147483647;
}
return result;
};