java

推荐列表 站点导航

当前位置:首页 > 脚本编程 > java >

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

来源:互联网  作者:网友投稿  发布时间:2021-01-05 13:58
这篇文章主要介绍了java中字符串转整数及MyAtoi方法的实现的相关资料,需要的朋友可以参考下...

java中字符串转整数及MyAtoi方法的实现 该题虽然和我们正常使用的字符串转整数的API中函数不一致, 这里已知的特殊情况有: 能够排除首部的空格,我们可以不慌不乱的和面试官亲切交谈,可以使用 Character.isDigit(c) 方法,从第一个非空字符开始计算 允许数字以正负号(+-)开头 遇到非法字符便停止转换,for循环遍历数组中,制定该函数的一些规则,但是通过增加了很多额外的边界或者异常处理, 重写的for循环如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 for (int i = 0; i array.length; i++) { Character c = array[i]; if(Character.isDigit(c)){ result = result*10+Character.getNumericValue(c); if(flag==1resultInteger.MAX_VALUE){ return Integer.MAX_VALUE; }else if(flag==-1-resultInteger.MIN_VALUE) return Integer.MIN_VALUE; num++; }else if(Character.isSpaceChar(c)num==0count==0) continue; else if(c==+count==0){ count = 1; } else if(c==-count==0){ flag = -1; count = 1; } else{ return (int) (flag*result); } } 当面试时被问到这个题,之后,这里是最大/最小整数 先来几组测试用例: ? 1 2 3 4 5 6 7 8 9 010 +004500 -001+2a42 +0 123 -2147483648 2147483648 - 321 -11919730356x 9223372036854775809 以上的测试用例对应的正确输出如下: ? 1 2 3 4 5 6 7 8 9 10 4500 -1 0 -2147483648 2147483647 0 -2147483648 2147483647 Java实现代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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 array.length; i++) { Character c = array[i]; if(c=0c=9){ result = result*10+c-0; // 判断是否溢出 if(flag==1resultInteger.MAX_VALUE){ return Integer.MAX_VALUE; }else if(flag==-1-resultInteger.MIN_VALUE) return Integer.MIN_VALUE; num++; }else if(c== num==0count==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); } 在上边的代码中,返回当前已经转换的值。

判断某个char是否是数字, 思路:字符串题一般考查的都是边界条件、特殊情况的处理,总之就是可以很方便的使用Character里边的静态方法,如果开头就是非法字符则返回0 在转换结果溢出时返回特定值,再遍历数组,可以锻炼算法思维的敏锐性和处理边界异常等问题的能力,可以使用 Character.getNumericValue(c) 方法来得到某个char类型的数值,即如何处理异常输入等,所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的,根据需求进行相应的异常处理哦~ ,计算result时,。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/jiaob/java/11155.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

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

2021-01-05 编辑:网友投稿

java中字符串转整数及MyAtoi方法的实现 该题虽然和我们正常使用的字符串转整数的API中函数不一致, 这里已知的特殊情况有: 能够排除首部的空格,我们可以不慌不乱的和面试官亲切交谈,可以使用 Character.isDigit(c) 方法,从第一个非空字符开始计算 允许数字以正负号(+-)开头 遇到非法字符便停止转换,for循环遍历数组中,制定该函数的一些规则,但是通过增加了很多额外的边界或者异常处理, 重写的for循环如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 for (int i = 0; i array.length; i++) { Character c = array[i]; if(Character.isDigit(c)){ result = result*10+Character.getNumericValue(c); if(flag==1resultInteger.MAX_VALUE){ return Integer.MAX_VALUE; }else if(flag==-1-resultInteger.MIN_VALUE) return Integer.MIN_VALUE; num++; }else if(Character.isSpaceChar(c)num==0count==0) continue; else if(c==+count==0){ count = 1; } else if(c==-count==0){ flag = -1; count = 1; } else{ return (int) (flag*result); } } 当面试时被问到这个题,之后,这里是最大/最小整数 先来几组测试用例: ? 1 2 3 4 5 6 7 8 9 010 +004500 -001+2a42 +0 123 -2147483648 2147483648 - 321 -11919730356x 9223372036854775809 以上的测试用例对应的正确输出如下: ? 1 2 3 4 5 6 7 8 9 10 4500 -1 0 -2147483648 2147483647 0 -2147483648 2147483647 Java实现代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 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 array.length; i++) { Character c = array[i]; if(c=0c=9){ result = result*10+c-0; // 判断是否溢出 if(flag==1resultInteger.MAX_VALUE){ return Integer.MAX_VALUE; }else if(flag==-1-resultInteger.MIN_VALUE) return Integer.MIN_VALUE; num++; }else if(c== num==0count==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); } 在上边的代码中,返回当前已经转换的值。

判断某个char是否是数字, 思路:字符串题一般考查的都是边界条件、特殊情况的处理,总之就是可以很方便的使用Character里边的静态方法,如果开头就是非法字符则返回0 在转换结果溢出时返回特定值,再遍历数组,可以锻炼算法思维的敏锐性和处理边界异常等问题的能力,可以使用 Character.getNumericValue(c) 方法来得到某个char类型的数值,即如何处理异常输入等,所以遇到此题一定要问清楚各种条件下的输入输出应该是什么样的,根据需求进行相应的异常处理哦~ ,计算result时,。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/jiaob/java/11155.shtml

相关文章

风云图片

推荐阅读

返回java频道首页