《剑指offer》JZ49把字符串转换成整数

    技术2022-07-11  93

    题目描述 将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。数值为0或者字符串不是一个合法的数值则返回0。 输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果是合法的数值表达则返回该数字,否则返回0

    解析:本题判断是否能够转换成整数很简单,但是还要判断是否越界;int:-2147483648~2147483647

    代码:

    public class Solution {     public int StrToInt(String str) {         //如果字符串为空   或者  全部都是空格         //当字符串中全部为空格时,trim()后,便是“”         if(str == null || "".equals(str.trim())){             return 0;         }         char[] chars = str.trim().toCharArray();         int flag = 1;         int res = 0;         int i = 0;         if(chars[i] == '-'){             flag = -1;         }         if(chars[i] == '+' || chars[i] == '-'){             i++;         }         while(i < chars.length){             if(isNum(chars[i])){                 int cur = chars[i] - '0';                 if(flag == 1 && (res > Integer.MAX_VALUE/10                                   || res == Integer.MAX_VALUE/10 && cur > 7)){                     return 0;                 }                 if(flag == -1 && (res > Integer.MAX_VALUE/10                                  || res == Integer.MAX_VALUE/10 && cur > 8)){                     return 0;                 }                 res = res * 10 + cur;                 i++;             }else{                 return 0;             }         }         return res*flag;     }     public static boolean isNum( char c){         return c >= '0' && c <= '9';     }      }

    Processed: 0.013, SQL: 10