image.png
    image.png

    1. public int myAtoi(String str) {
    2. if(str==null||str.length()==0)
    3. return 0;
    4. int start = 0;
    5. int n = str.length();
    6. //去掉前面的空格
    7. while(start<n&&str.charAt(start)==' ')
    8. start++;
    9. //计算符号
    10. int sign = 1;
    11. if(start<n&&str.charAt(start)=='-'){
    12. sign=-1;
    13. start++;
    14. }else if(start<n&&str.charAt(start)=='+')
    15. start++;
    16. int ret = 0;
    17. while(start<n){
    18. //如果是数字
    19. if(str.charAt(start)>='0'&&str.charAt(start)<='9'){
    20. //如果为整数
    21. if(sign>0){
    22. //判断是否越界
    23. if(ret>Integer.MAX_VALUE/10||(ret==Integer.MAX_VALUE/10&&str.charAt(start)>'7'))
    24. return Integer.MAX_VALUE;
    25. //累加求值
    26. ret = ret*10+(str.charAt(start)-'0');
    27. }else{
    28. //判断是否越界
    29. if(ret<Integer.MIN_VALUE/10||(ret==Integer.MIN_VALUE/10&&str.charAt(start)>'8'))
    30. return Integer.MIN_VALUE;
    31. //注意这里是减
    32. ret = ret*10-(str.charAt(start)-'0');
    33. }
    34. }else //否则跳出循环
    35. break;
    36. start++;//遍历下一个元素
    37. }
    38. return ret;
    39. }