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
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~