您的位置:首页 > 其它

String to Integer_Leetcode_#8

2016-08-13 16:08 417 查看
1.题目

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.

2.解法

思路:考虑各种不规则输入如“ +000123”,“-123abc23”, 以及溢出。

时间复杂度:O(N)

public class Solution {
public int myAtoi(String str) {
int res = 0;
int i = 0;
int sign = 1;
int digit = 0;
int max = Integer.MAX_VALUE / 10;
int len = str.length();
while(i < len && str.charAt(i) == ' '){
++i;
}
if(i == len) return 0;
if(str.charAt(i) == '-'){
++i;
sign = -1;
}else if(str.charAt(i) == '+'){
++i;
}
while(i < len && Character.isDigit(str.charAt(i))){
digit = Character.getNumericValue(str.charAt(i));
if(res > max){
return (sign == 1)? Integer.MAX_VALUE: Integer.MIN_VALUE;
}
if(res == max && digit >= 8 && sign == -1){
return Integer.MIN_VALUE;
}
if(res == max && digit >= 7 && sign == 1){
return Integer.MAX_VALUE;
}
res = res * 10 + digit;
++i;
}
return res * sign;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode string