热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

java中字符串转整数及MyAtoi方法的实现

这篇文章主要介绍了java中字符串转整数及MyAtoi方法的实现的相关资料,需要的朋友可以参考下

java中字符串转整数及MyAtoi方法的实现

       该题虽然和我们正常使用的字符串转整数的API中函数不一致,但是通过增加了很多额外的边界或者异常处理,可以锻炼算法思维的敏锐性和处理边界异常等问题的能力。


思路:字符串题一般考查的都是边界条件、特殊情况的处理。所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的。

这里已知的特殊情况有:

  • 能够排除首部的空格,从第一个非空字符开始计算
  • 允许数字以正负号(+-)开头
  • 遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回0
  • 在转换结果溢出时返回特定值,这里是最大/最小整数

先来几组测试用例:

"  010"
"  +004500"
" -001+2a42"
"  +0 123"
"-2147483648"
"2147483648"
"  - 321"
"   -11919730356x"
"9223372036854775809"

以上的测试用例对应的正确输出如下:

10
4500
-1
0
-2147483648
2147483647
0
-2147483648
2147483647

Java实现代码如下:

public static int myAtoi(String str) { 
    if(str==null||str.length()==0) 
      return 0; 
    char[] array = str.toCharArray(); 
    long result = 0; // 要返回的结果result 
    int count = 0; // 记录‘+'或者‘-'出现的次数 
    int num = 0;  // 判断空格出现的位置 
    int flag = 1; // 正数还是负数 
    for (int i = 0; i ='0'&&c<='9'){ 
        result = result*10+c-'0'; 
        // 判断是否溢出 
        if(flag==1&&result>Integer.MAX_VALUE){ 
          return Integer.MAX_VALUE; 
        }else if(flag==-1&&-result

在上边的代码中,for循环遍历数组中,判断某个char是否是数字,可以使用Character.isDigit(c)方法,计算result时,可以使用Character.getNumericValue(c)方法来得到某个char类型的数值,总之就是可以很方便的使用Character里边的静态方法。

重写的for循环如下:

for (int i = 0; i Integer.MAX_VALUE){ 
          return Integer.MAX_VALUE; 
        }else if(flag==-1&&-result

        当面试时被问到这个题,我们可以不慌不乱的和面试官亲切交谈,制定该函数的一些规则,即如何处理异常输入等,之后,再遍历数组,根据需求进行相应的异常处理哦~

       感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


推荐阅读
  • 本文将详细介绍如何配置并整合MVP架构、Retrofit网络请求库、Dagger2依赖注入框架以及RxAndroid响应式编程库,构建高效、模块化的Android应用。 ... [详细]
  • 本文介绍了两个重要的Node.js库——cache-content-type和mime-types,它们在处理HTTP响应头时非常有用。cache-content-type是基于mime-types构建的,并且实现了缓存机制以提高性能。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 利用Git GUI将本地项目同步至GitHub的方法
    GitHub作为开发者不可或缺的工具,不仅提供了丰富的开源项目资源,还极大地便利了个人项目的管理和版本控制。本文将详细介绍如何使用Git GUI工具将本地开发的项目上传至GitHub。 ... [详细]
  • 作者提供代码在https:github.comthunlpOpenNRE网址主要技术:文章主要是通过一对实体和对应的多个包含实体对的句子实例作为训练数据集ÿ ... [详细]
  • 本文介绍如何在Caffe框架中运行ResNet模型,包括通过Caffe内置工具创建LMDB数据集的方法,以及相关参数的详细说明。 ... [详细]
  • 本文介绍了如何通过Git日志查找特定的提交记录,并使用git reset --soft命令撤销指定版本的提交,同时保留工作目录中的更改。最后,文章还说明了如何通过强制推送更新远程仓库。 ... [详细]
  • 使用IntelliJ IDEA高效开发与运行Shell脚本
    本文介绍了如何利用IntelliJ IDEA中的BashSupport插件来增强Shell脚本的开发体验,包括插件的安装、配置以及脚本的运行方法。 ... [详细]
  • 深入解析Nacos服务自动注册机制
    本文将探讨Nacos服务自动注册的具体实现方法,特别是如何通过Spring事件机制完成服务注册。通过对Nacos源码的详细分析,帮助读者理解其背后的原理。 ... [详细]
  • 本文详细记录了在Mac操作系统中安装Hexo时遇到的权限错误,并提供了有效的解决方案。 ... [详细]
  • Redis管理工具的安装与使用指南
    本文详细介绍了两款流行的Redis管理工具——Another Redis Desktop Manager 和 Redis Desktop Manager 的安装步骤及基本使用方法,旨在帮助用户更高效地管理和操作Redis数据库。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 本文档涵盖了多个 Python 编程练习题,包括使用 while 和 for 循环处理数字序列、字符串操作以及简单的算法实现等。每道题目都提供了详细的代码示例,旨在帮助初学者加深对 Python 基础知识的理解。 ... [详细]
  • 本文总结了在多人协作开发环境中使用 Git 时常见的问题及其解决方案,包括错误合并分支的处理、使用 SourceTree 查找问题提交、Git 自动生成的提交信息解释、删除远程仓库文件夹而不删除本地文件的方法、合并冲突时的注意事项以及如何将多个提交合并为一个。 ... [详细]
  • 本文介绍了在Visual C++环境中通过编程实现鼠标移动及点击的具体方法,包括获取鼠标当前位置、移动鼠标至指定位置并执行点击等操作。 ... [详细]
author-avatar
后悔不够狠
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有