[LeetCode javaScript] 8. 文字列変換整数(atoi)

1768 ワード

文字列を整数に変換できるようにatoi関数を実装してください.
まず、この関数は、必要に応じて、最初の非スペース文字が見つかるまで、不要な先頭スペース文字を破棄します.
私たちが探した最初の非空の文字が正または負の記号である場合、この記号を後面のできるだけ多くの連続数字と組み合わせて、整数の正負の記号とします.最初の空白以外の文字が数値である場合、その後の連続する数値文字と直接組み合わせて整数を形成します.
この文字列には、有効な整数部分に加えて、関数に影響を与えるべきではない無視できる余分な文字が存在する可能性があります.
注意:この文字列の最初の非スペース文字が有効な整数文字でない場合、文字列が空である場合、または文字列に空白文字のみが含まれている場合、関数を変換する必要はありません.
いずれの場合も、関数が有効な変換ができない場合は、0を返します.
説明:
我々の環境では32ビットサイズの符号付き整数しか記憶できないと仮定すると,その数値範囲は[−231,231−1]である.数値がこの範囲を超えた場合、qingはINT_を返します.MAX(231−1)またはINT_MIN (−231) .
例1:
入力:42出力:42例2:
入力:「-42」出力:-42解釈:最初の空白以外の文字は「-」で、マイナス記号です.負の記号をできるだけ後ろに連続して現れるすべての数字と組み合わせて、最後に-42を得ます.例3:
入力:“4193 with words”出力:4193解釈:変換は数字“3”に締め切られ、次の文字は数字ではないためである.例4:
入力:「words and 987」出力:0解釈:最初の非空文字は「w」ですが、数字や正、負の記号ではありません.したがって、有効な変換は実行できません.例5:
入力:「-9183472332」出力:-2174848648解釈:数字「-9183472332」が32ビットの符号付き整数範囲を超えた.よってINT_を返すMIN (−231) .
/**
 * @param {string} str
 * @return {number}
 */
var myAtoi = function(str) {
	let start = 0;
	let sign = "+";
	let stt=str.trim();
	let min=-2147483648;
	let max=2147483647;
	if(stt == null || stt.length == 0) {
		return 0;
	}
	if(stt[0]=="-"){
		start=1;
		sign="-";
	}else if(stt[0]=="+"){
		start=1;
	}
	//           
	let res=[];
	for(let i=start;i=48&&stt[i].charCodeAt(0)<=57){
			res.push(stt[i]);
		}else{
			break;
		}
	}
	if(res.length==0){return 0;}
	let restr=res.join("");
	let zp=parseInt(restr);
	if(sign=="-"){
		zp=zp*-1;
	}
	if(zpmax){
		zp=max;
	}
	return zp;
};

let test1 = "   -42";
let t1 = myAtoi(test1);
console.log(t1);

let test2="42";
let t2=myAtoi(test2);
console.log(t2);