LeetCode之 String to Integer (atoi)
2018-03-26 13:45
274 查看
做一个短视的人!
该字符串可以在形成整数的那些字符之后包含额外的字符,这些字符被忽略并且对该函数的行为没有影响。
如果str中的第一个非空白字符序列不是有效的整数,或者如果由于str为空或仅包含空白字符而不存在此类序列,则不执行转换。
如果不能执行有效的转换,则返回零值。如果正确值超出了可表示值的范围,则返回INT_MAX(2147483647)或INT_MIN(-2147483648)。
LeetCode官网:https://leetcode.com/
我是直接用GitHub授权登录的。问题
实现atoi将字符串转换为整数。提示:
仔细考虑所有可能的输入案例。如果你想要一个挑战,请不要在下面看到问问自己什么是可能的输入案例。注意:
这是针对这个问题被隐含的指定的(即没有给定的输入规格)。您有责任预先收集所有输入要求。atoi的要求:
该函数首先丢弃尽可能多的空白字符,直到找到第一个非空白字符。然后,从这个字符开始,采用一个可选的初始正号或负号,后面跟随尽可能多的数字,并将它们解释为数字值。该字符串可以在形成整数的那些字符之后包含额外的字符,这些字符被忽略并且对该函数的行为没有影响。
如果str中的第一个非空白字符序列不是有效的整数,或者如果由于str为空或仅包含空白字符而不存在此类序列,则不执行转换。
如果不能执行有效的转换,则返回零值。如果正确值超出了可表示值的范围,则返回INT_MAX(2147483647)或INT_MIN(-2147483648)。
解法
class Solution { public int myAtoi(String str) { int index = 0, sign = 1, total = 0; //1. Empty string if(str.length() == 0) return 0; //2. Remove Spaces while(str.charAt(index) == ' ' && index < str.length()) index ++; //3. Handle signs if(str.charAt(index) == '+' || str.charAt(index) == '-'){ sign = str.charAt(index) == '+' ? 1 : -1; index ++; } //4. Convert number and avoid overflow while(index < str.length()){ int digit = str.charAt(index) - '0'; if(digit < 0 || digit > 9) break; //check if total will be overflow after 10 times and add digit if(Integer.MAX_VALUE/10 < total || Integer.MAX_VALUE/10 == total && Integer.MAX_VALUE %10 < digit) return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE; total = 10 * total + digit; index ++; } return total * sign; } }
相关文章推荐
- leetcode:String to Integer (atoi) 字符串转化成整数
- String to Integer (atoi)--LeetCode
- LeetCode题解:String to Integer (atoi)
- leetcode之String to Integer (atoi)
- LeetCode - String to Integer (atoi) 题解
- leetcode 8. String to Integer (atoi)
- LeetCode String to Integer (atoi) 字符串转换整数
- LeetCode 8. String to Integer (atoi)
- [LeetCode]String to Integer (atoi)
- [leetcode] String to Integer (atoi)
- [LeetCode]:String to Integer (atoi)
- Leetcode String to Integer (atoi)
- LeetCode 8 String to Integer (atoi)
- leetcode: 8. String to Integer (atoi)
- Leetcode-8. String to Integer (atoi)
- [LeetCode]8 String to Integer (atoi)
- 【LeetCode 8_字符串_实现】String to Integer (atoi)
- LeetCode 008 StringToInteger(atoi)
- LeetCode OJ String to Integer (atoi)
- 【LeetCode】C# 8、String to Integer (atoi)