题解 | #牛的力量#

牛的力量

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

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
榕城小榕树:你是我见过最幸福的牛客男孩
点赞 评论 收藏
分享
06-25 09:33
厦门大学 Java
程序员饺子:现在日常估计没啥hc了,等到八月多估计就慢慢有了。双九✌🏻不用焦虑的
投递快手等公司7个岗位
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务