300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 字符串 -- 将整数字符串转换为成整数值 -- 图解

字符串 -- 将整数字符串转换为成整数值 -- 图解

时间:2019-05-02 08:17:51

相关推荐

字符串 -- 将整数字符串转换为成整数值 -- 图解

代码如下:

public class Problem_05_ConvertStringToInteger {public static int convert(String str) {if (str == null || str.equals("")) {return 0; // can not convert}char[] chas = str.toCharArray();if (!isValid(chas)) {return 0; // can not convert}boolean posi = chas[0] == '-' ? false : true;int minq = Integer.MIN_VALUE / 10;int minr = Integer.MIN_VALUE % 10;int res = 0;int cur = 0;for (int i = posi ? 0 : 1; i < chas.length; i++) {cur = '0' - chas[i];if ((res < minq) || (res == minq && cur < minr)) {return 0; // can not convert}res = res * 10 + cur;}if (posi && res == Integer.MIN_VALUE) {return 0; // can not convert}return posi ? -res : res;}public static boolean isValid(char[] chas) {if (chas[0] != '-' && (chas[0] < '0' || chas[0] > '9')) {return false;}if (chas[0] == '-' && (chas.length == 1 || chas[1] == '0')) {return false;}if (chas[0] == '0' && chas.length > 1) {return false;}for (int i = 1; i < chas.length; i++) {if (chas[i] < '0' || chas[i] > '9') {return false;}}return true;}public static void main(String[] args) {String test1 = "2147483647"; // max in javaSystem.out.println(convert(test1));String test2 = "-2147483648"; // min in javaSystem.out.println(convert(test2));String test3 = "2147483648"; // overflowSystem.out.println(convert(test3));String test4 = "-2147483649"; // overflowSystem.out.println(convert(test4));String test5 = "-123";System.out.println(convert(test5));}}

参考资料: 程序员代码面试指南 -- 左程云

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。