【剑指offer】把字符串转换成整数

把字符串转换成整数

http://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e

题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
1、思路分析
思路为将字符串去掉首尾空格后转换为字符数组,循环遍历得到整数。关键在于边界条件的判断,正数的边界条件为res > Integer.MAX_VALUE/10 || res == Integer.MAX_VALUE/10 && cur >7,负数的边界条件为res > Integer.MAX_VALUE/10 || res == Integer.MAX_VALUE/10,暂时没有考虑正负号。
2、代码
public class Solution {
public int StrToInt(String str) {
//最优解
if(str == null || "".equals(str.trim())) return 0;
str = str.trim();
char[] arr = str.toCharArray();
int i = 0;
int flag = 1;
int res = 0;
if(arr[i] == '-'){
flag = -1;
}
if( arr[i] == '+' || arr[i] == '-'){
i++;
}
while(i<arr.length ){
//是数字
if(isNum(arr[i])){
int cur = arr[i] - '0';
if(flag == 1 && (res > Integer.MAX_VALUE/10 || res == Integer.MAX_VALUE/10 && cur >7)){
return Integer.MAX_VALUE;
}
if(flag == -1 && (res > Integer.MAX_VALUE/10 || res == Integer.MAX_VALUE/10 && cur >8)){
return -(Integer.MAX_VALUE+1);
}
res = res10 +cur;
i++;
}
else{
//不是数字
return 0;
}
}
return res
flag;
}
public static boolean isNum(char c){
return c>='0'&& c<='9';
}
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务