题目
题链:剑指 Offer 67. 把字符串转换成整数
题解
K神大佬详细题解:面试题67. 把字符串转换成整数(数字越界处理,清晰图解)
题目怎么说呢、难度在于很麻烦,要仔细。
大概步骤:
先去除两边空格、转化为字符数组再判断字符数组是否为0、为0直接返回0再设置一个变量sign表示正负判断第一是否为正负字符、为﹣就将sign改为-1、且将开始遍历的索引改为1然后开始遍历、先判断是否为数字、不是直接返回0再判读是否超过最大值、超过根据符号±直接返回都不满足5、6条件就是进行拼接了最后遍历完成直接返回res*sign
class Solution {public int strToInt(String str) {char[] chars = str.trim().toCharArray();if (chars.length == 0){return 0;}int sign = 1, i = 0;int res = 0,maxOrMin = Integer.MAX_VALUE / 10;if (chars[i] == '-'){sign = -1;i = 1;}else if (chars[i] == '+'){i = 1;}for (int j = i; j < chars.length; j++) {if (chars[j] < '0' || chars[j] > '9'){break;}if (res > maxOrMin || (res == maxOrMin && chars[j] > '7')){return sign == 1 ? Integer.MAX_VALUE:Integer.MIN_VALUE;}res = res*10 + (chars[j] - '0');}return res*sign;}}