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

京公网安备 11010502036488号