Skip to content

Instantly share code, notes, and snippets.

@aire-con-gas
Last active August 14, 2018 13:22
Show Gist options
  • Save aire-con-gas/7395d4790c1902ed0754116f9fe92ed8 to your computer and use it in GitHub Desktop.
Save aire-con-gas/7395d4790c1902ed0754116f9fe92ed8 to your computer and use it in GitHub Desktop.
JS Bin// source http://jsbin.com/tewaren
'use strict';
function atoi(str) {
var sign = 1;
var base = 0;
var i = 0;
var INT_MIN = Number.MIN_VALUE;
var INT_MAX = Number.MAX_VALUE;
var strArr = str.split('');
while (i < strArr.length && strArr[i] === ' ') {
i++;
}
if (i >= strArr.length) {
return 0;
}
if (strArr[i] === '+' || strArr[i] === '-') {
if (strArr[i] === '-') {
sign = -1;
}
i++;
}
while (i < strArr.length && strArr[i] >= '0' && strArr[i] <= '9') {
if (base > INT_MAX / 10 || base === INT_MAX / 10 && strArr[i] - '0' > 7) {
if (sign === -1) {
return INT_MIN;
} else {
return INT_MAX;
}
}
base = 10 * base + (strArr[i++] - '0');
}
return base * sign;
}
console.log('atoi(-42)', atoi('-42'));
console.log('atoi(4193 with words)', atoi('4193 with words'));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment