- Question Description
- My Key
package LeetCode;
public class Test {
public static void main(String[] args) {
System.out.println(myAtoi("+12345"));
System.out.println(myAtoi("-12345"));
System.out.println(myAtoi("0000012345"));
System.out.println(myAtoi("000001234500"));
System.out.println(myAtoi("a1234500"));
System.out.println(myAtoi("12 34500"));
System.out.println(myAtoi("1234500a"));
System.out.println(myAtoi(" +0 123"));
System.out.println(myAtoi("-2147483649"));
System.out.println(myAtoi("1234500 - 12"));
System.out.println(myAtoi("0-1"));
}
public static int myAtoi(String str) {
char[] strArr = str.toCharArray();
int rev = 0;
int i = 0;
int flag = 1;
//1. 1st letter
for (i = 0; i < strArr.length; i++) {
if (Character.isWhitespace(strArr[i])){
continue;
} else if (!Character.isDigit(strArr[i])) {
if (strArr[i] == '+') {
flag = 1;
i++;
break;
} else if (strArr[i] == '-') {
flag = -1;
i++;
break;
} else {
System.out.println(str + "is not valid string.");
return 0;
}
} else if (strArr[i] == '0') {
i++;
break;
} else {
rev = Integer.valueOf(String.valueOf(strArr[i]))*flag;
i++;
break;
}
}
int j = 0;
if (i != strArr.length) {
j = i;
}
for (j=i; j < strArr.length; j++) {
if (!Character.isWhitespace(strArr[j])){
if (!Character.isDigit(strArr[j])) {
break;
} else {
if (flag == 1) {
int a = Integer.valueOf(String.valueOf(strArr[j]));
if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE/10 && a >= 7)) {
return Integer.MAX_VALUE;
}
rev *= 10;
rev += a;
} else if (flag == -1) {
System.out.println("fafa" + rev);
int a = Integer.valueOf(String.valueOf(strArr[j]));
if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE/10 && a > 8)) {
return Integer.MIN_VALUE;
}
rev *= 10;
rev -= a;
}
}
} else {
break;
}
}
return rev;
}
}