Copy "10" => 10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1
Copy public class Solution {
/**
* @param str: A string
* @return: An integer
*/
public int atoi(String str) {
// write your code here
if(str == null ) return 0;
str = str.trim();
if(str.length() == 0) return 0;
int sign = 1, index = 0;
if(str.charAt(index) == '+'){
index++;
}else if(str.charAt(index) == '-'){
sign = -1;
index++;
}
long num = 0;
for (;index < str.length() ;index++ ){
//not num
if(str.charAt(index) < '0' || str.charAt(index) > '9'){
break;
}
num = num * 10 + (str.charAt(index) -'0');
if(num > Integer.MAX_VALUE){
break;
}
}
if(num * sign < Integer.MIN_VALUE){
return Integer.MIN_VALUE;
}
if(num * sign > Integer.MAX_VALUE){
return Integer.MAX_VALUE;
}
return (int)num*sign;
}
}
Copy class Solution {
public int myAtoi(String str) {
//corner case " + -" not valid . out bounday
if(str == null || str.length() == 0)
return 0;
str = str.trim();
if(str.length() == 0){
return 0;
}
int sign = 1, start = 0;
long res = 0;
char f = str.charAt(0);
if(f == '+'){
sign =1;
start++;
}
if(f == '-'){
sign = -1;
start++;
}
for(int i = start; i< str.length() ; i++){
if(!Character.isDigit(str.charAt(i))){
return (int) res*sign;
}
res = res*10 + str.charAt(i) - '0';
if(res > Integer.MAX_VALUE){
return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
}
}
return (int) res*sign;
}
}