classSolution{publicintmyAtoi(String str){int len = str.length();int first =1;//判断是否进入数字识别int flag =1;//存储结果的正负int ans =0;//存储结果for(int i=0;i<len;++i){char temp = str.charAt(i);if(first==1){if(temp==' ')//空格跳过continue;elseif(temp=='+'){
flag =1;}elseif(temp=='-'){
flag =-1;}elseif(temp>='0'&& temp<='9'){
ans = ans*10+(int)(temp-'0');}else{//其他情况直接返回0return0;}
first =0;//进入数字识别}else{if(temp>='0'&& temp<='9'){//进入数字识别后识别到的是数字,继续//判断越界情况。需要注意的是Integer.MAX_VALUE/10 等于 Integer.MAX_VALUE/10。思路同上一题//这里是判断正数越界if(flag==1&&(ans>Integer.MAX_VALUE/10||(ans==Integer.MAX_VALUE/10&& temp>'7')))return Integer.MAX_VALUE;//这里是判断负数越界。if(flag==-1&&(ans>Integer.MAX_VALUE/10||(ans==Integer.MAX_VALUE/10&& temp>'8')))return Integer.MIN_VALUE;
ans = ans*10+(int)(temp-'0');}else{//识别的不是数字,直接返回结果return flag*ans;}}}return flag*ans;}}
作者:smile_day
链接:https://leetcode-cn.com/problems/string-to-integer-atoi/solution/java-jian-dan-shi-xian-by-wei-xiao-yong-heng/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。