Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
这个题真的是很难考虑到那么多种奇葩的情况,靠debug来刷新三观。
public class Solution { public int myAtoi(String str) { if (str.length()==0||str==null){ return 0; } for(int i=0;i<str.length();i++){ if(str.charAt(i)==' '){ continue; } str = str.substring(i); break; } int flag = 1; if(str.charAt(0)=='+'){ flag = 1; str = str.substring(1); } else if(str.charAt(0)=='-'){ flag = -1; str = str.substring(1); } long ans = 0; int len = str.length(); for(int i=0;i<len;i++){ if(str.charAt(i)>='0'&&str.charAt(i)<='9'){ ans = ans*10+Character.getNumericValue(str.charAt(i)); if(flag*ans>Integer.MAX_VALUE){ return Integer.MAX_VALUE; } if(flag*ans<Integer.MIN_VALUE){ return Integer.MIN_VALUE; } } if((str.charAt(i)<'0'||str.charAt(i)>'9')){ break; } } return (int)ans*flag; } }注意考虑空格、正负号、溢出等等情况