您的位置:首页 > 编程语言 > Java开发

[leetcode]8. String to Integer (atoi)(Java)

2017-07-06 10:05 465 查看
https://leetcode.com/problems/string-to-integer-atoi/#/description

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

Update (2015-02-10):

The signature of the 
C++
 function had been updated. If you still see your function signature
accepts a 
const char *
 argument, please click the reload button  to
reset your code definition.

spoilers alert... click to show requirements for atoi.

package go.jacob.day706;

public class Demo1 {
/*
* [leetcode]8. String to Integer (atoi)
* 该题需要考虑的几个关键点:1.正负号;2.中间存在字母(只取字母前的数字);3.溢出;4.前后空格
*
* Integer.Min_VALUE=-2147483648 . Integer.MAX_VALUE=2147483647
*/
public static int myAtoi(String str) {
if (str == null || str.trim().length() < 1)
return 0;
//处理掉前后空格
char[] arr = str.trim().toCharArray();

int sign = 1, index = 0;
//判断正负号
if (arr[0] == '+')
index++;
if (arr[0] == '-') {
sign = -1;
index++;
}

int num = 0;
for (int i = index; i < arr.length; i++) {
if (arr[i] - '0' >= 0 && arr[i] - '9' <= 0) {
//如果当前运算会越界的时候,直接输出结果
if (num > Integer.MAX_VALUE / 10 || num == Integer.MAX_VALUE / 10 && arr[i] - '7' > 0) {
if (sign > 0)
return Integer.MAX_VALUE;
else
return Integer.MIN_VALUE;
}

num = 10 * num + arr[i] - '0';
} else
//如果是字母,跳出循环
break;
}

return num * sign;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: