当前位置: 首页 > news >正文

[leetcode]_String to Integer (atoi)

非常考虑思维全面性的一道题,考验是否能够考虑本问题的方方面面。

题目:将一个string转换为int。实现函数atoi()的功能。

先应该明确atoi()有哪些特殊功能:(正常的正负数情况我就不列了)

inputoutput
”+1“1
”   +   1“ 0(error了)
”       1“1(前头只有空格是合法的)
”12b45“12(取前面的数字)
溢出 : ”2147483648“(负数情况同)2147483647(MAX_VALUE)

 

类似我对atoi()的功能不熟的人来说,这道题就是不停WA的血泪史。每次要修正一次错误答案。

最终AC:

public int atoi(String str) {
        int len = str.length();
        long num = 0;
        //用long型存储,以处理溢出的情况
        int ifNegative = 1;
        boolean numStatus = false;
        for(int i = 0 ; i < len ; i++){
            char ch = str.charAt(i);
            if(numStatus && (ch < '0' || ch > '9')) break;
            else if(numStatus && ch >= '0' && ch <= '9'){
                num = num * 10 + (ch - '0');
            }else if(!numStatus && ch != '-' && ch != '+' && (ch < '0' || ch > '9')){
                num = 0;
                break;
            }else if(!numStatus && ch == '-'){
                numStatus = true;
                ifNegative = -1;
            }else if(!numStatus && ch == '+'){
                numStatus = true;
            }else if(!numStatus && ch >= '0' && ch <= '9'){
                numStatus = true;
                num = num * 10 + (ch - '0');
            }
            
        }
        num *= ifNegative;
        
        int result = 0;
        if(num > Integer.MAX_VALUE) result = Integer.MAX_VALUE;
        else if(num < Integer.MIN_VALUE) result = Integer.MIN_VALUE;
        else result = (int) num;
        
        return result;
        
    }

 

转载于:https://www.cnblogs.com/glamourousGirl/p/3730164.html

相关文章:

  • 收到offer 7B
  • Python学习_算数运算函数
  • 【struts2】Result和ResultType
  • JVM调优[转]
  • cocos2d-x3.0 编译android出现的问题笔记  cocos2dx3.0 Android.mk No rule to make target
  • WCF学习笔记二
  • php利用新浪接口查询ip获取地理位置
  • 我的推送架构解决方案
  • Android NDK JNI C++ 13 pthread多线程
  • 铁大课表 详细设计说明书
  • 结合FireBreath在Chrome/FireFox的多进程模式下崩溃一例
  • Java多线程之Wait()和Notify()
  • [java面试]宇信易诚 广州分公司 java笔试题目回忆录
  • 忘记scott密码解决
  • 采集/自动登录啊都可以用这两个方法实现 asp.net
  • [PHP内核探索]PHP中的哈希表
  • 《Java编程思想》读书笔记-对象导论
  • android图片蒙层
  • C++类的相互关联
  • Cookie 在前端中的实践
  • js
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • python3 使用 asyncio 代替线程
  • python学习笔记-类对象的信息
  • Spring声明式事务管理之一:五大属性分析
  • Web Storage相关
  • - 概述 - 《设计模式(极简c++版)》
  • 构建二叉树进行数值数组的去重及优化
  • 构建工具 - 收藏集 - 掘金
  • 关于extract.autodesk.io的一些说明
  • 基于webpack 的 vue 多页架构
  • 驱动程序原理
  • 深度学习入门:10门免费线上课程推荐
  • 通信类
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 中文输入法与React文本输入框的问题与解决方案
  • (39)STM32——FLASH闪存
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转载)虚函数剖析
  • *2 echo、printf、mkdir命令的应用
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @Mapper作用
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [HTML]Web前端开发技术7(HTML5、CSS3、JavaScript )CSS的定位机制——喵喵画网页
  • [INSTALL_FAILED_TEST_ONLY],Android开发出现应用未安装
  • [IOI2007 D1T1]Miners 矿工配餐