• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

java 搞代码 4年前 (2022-01-05) 35次浏览 已收录 0个评论

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

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

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

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

这里已知的特殊情况有:

  • 能够排除首部的空格,从第一个非空字符开始计算
  • 允许数字以正负号(+-)开头
  • 遇到非法字符便停止转换,返回当前已经转换的值,如果开头就是非法字符则返回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'&&cInteger.MAX_VALUE){ return Integer.MAX_VALUE; }else if(flag==-1&&-result<Integer.MIN_VALUE) return Integer.MIN_VALUE; num++; }else if(c==' '&&num==0&&count==0) continue; else if(c=='+'&&count==0){ count = 1; } else if(c=='-'&&count==0){ flag = -1; count = 1; } else{ return (int) (flag*result); } } return (int) (flag*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<Integer.MIN_VALUE) return Integer.MIN_VALUE; num++; }else if(Character.isSpaceChar(c)&&num==0&&count==0) continue; else if(c=='+'&&count==0){ count = 1; } else if(c=='-'&&count==0){ flag = -1; count = 1; } else{ return (int) (flag*result); } } 

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

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

以上就是java中字符串转整数及MyAtoi方法的实现的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:java中字符串转整数及MyAtoi方法的实现

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址