import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @return int整型
     */
      public int myAtoi(String s) {
        int index = 0;
        // 去除前导空格
        while (s.charAt(index) == ' ') {
            index++;
        }
        long result = 0;
        for (int i = index; i < s.length()&&Character.isDigit(s.charAt(i)); i++) {
		   // 这里也去除了前导0,因为 0 在加和乘的过程中result不变
            result = result*10+(s.charAt(i)-'0');
		  // 一边字符串转数字,一边进行范围判断,然后按规则进行输出
            if(result>Integer.MAX_VALUE){
                return Integer.MAX_VALUE;
            }else if(result<0){
                return 0;
            }
        }
		// 结果强制类型转化为int,因为已经判断过不会移除,因此不会产生范围丢失情况。
        return (int)result;
    }
}

本题知识点分析:

1.API函数(Character.isDigit)判断是否为数字,或者直接判断是否在'0'到'9'之间

2.数学模拟

3.数组遍历

本题解题思路分析:

1.先去除前导空格

2.然后就是字符串转数字 result*10+这一位数字

3.隐性地去除了前导0

4.然后根据范围是否越界,然后进行返回

5.最后强转int返回

本题使用编程语言: Java

如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~