题解 | #牛的力量#
牛的力量
https://www.nowcoder.com/practice/432b49537d9c4d878060468930965fc8?tpId=363&tqId=10613500&ru=/exam/oj&qru=/ta/super-company23Year/question-ranking&sourceUrl=%2Fexam%2Foj%3Fpage%3D1%26tab%3D%25E7%25AE%2597%25E6%25B3%2595%25E7%25AF%2587%26topicId%3D363
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
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~