最笨的办法实现 一步步判断
/** * @param {string} s * @return {number} */ var myAtoi = function(s) { s = s.trim() let re if(!isNaN(parseInt(s)) && s.length == 1){ return parseInt(s) } if(isNaN(parseInt(s)) && s.length == 1){ return 0 } if(s == "" ){ return 0 } if(s.charAt(0) == "-"){ s = s.substring(1) if(isNaN(s.charAt(0))){ //不是数字 return 0 }else{ re = -getNumber(s,false) } }else if(s.charAt(0) == "+"){ s = s.substring(1) if(isNaN(s.charAt(0)) || s.charAt(0) == " "){ //不是数字 return 0 }else{ re = getNumber(s,true) } }else { if(isNaN(s.charAt(0))){ //不是数字 return 0 }else{ re = getNumber(s,true) } } return re }; function getNumber(str,bo){ str = str.split("") let res = "" let l = str.length let i = 0 while(i<l){ if(!isNaN(parseInt(str[i]))){ // 是数字 res += str[i] }else{ break } i++ } let es = parseInt(res) if(bo == false){ //负数 if(es > Math.pow(2,31)){ es = Math.pow(2,31) } } if(bo == true){ //正数 if(es >= Math.pow(2,31)){ es = Math.pow(2,31)-1 } } return es }