标签:
题目链接: https://oj.leetcode.com/problems/string-to-integer-atoi/
问题:
Implement atoi to convert a string to an integer.
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.
解题思路:
可以将字符串分为几部分
1)空格
字符串首部的空格直接跳过
2. 正负号
最多只能取一个
3)数字
字符串可以包含0~9以外的字符,如果遇到非数字字符,那么只取该字符之前的部分
注意:
这道题的一个关键点是处理溢出,如果超出int的范围,返回边界(2147483647或-2147483648)
通过逐位判断的方法,使用乘法和加法将每个digit附加到已经转换的位之后,并且判断是否溢出
1 public int atoi(String str){ 2 // 1. null or empty string 3 if(str == null || str.length() == 0){ 4 return 0; 5 } 6 7 //2. whitespace 8 str = str.trim(); 9 10 char flag = ‘+‘; 11 12 //check negative or positive 13 int i = 0; 14 if(str.charAt(0) == ‘-‘){ 15 flag = ‘-‘; 16 i++; 17 }else if(str.charAt(0) == ‘+‘){ 18 i++; 19 } 20 21 //use double to store result 22 double result = 0; 23 24 //calculate value 25 while(str.length() > i && str.charAt(i) >= 0 && str.charAt(i) <= ‘9‘){ 26 if(Integer.MAX_VALUE/10 < result || 27 (Integer.MAX_VALUE/10 == result && Integer.MAX_VALUE%10 < (str.charAt(i)-‘0‘))){ 28 return flag == ‘-‘ ? Integer.MIN_VALUE : Integer.MAX_VALUE; 29 } 30 result = result * 10 + (str.charAt(i) - ‘0‘); 31 i++; 32 } 33 34 if(flag == ‘-‘){ 35 result = -result; 36 } 37 38 return (int)result; 39 }
[LeetCode] String to Integer (atoi)
标签:
原文地址:http://www.cnblogs.com/momo-fun/p/5779140.html