LeetCode 8. String to Integer (atoi) (字符串到整数)
2017-12-10 06:46
579 查看
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.
题目标签:String
题目给了我们一个 str,让我们把它 转换为 int。
其中有很多违规的条件没有说明:
正负的符号只能有0个 或者 1个;
符号后面就应该是数字了,如果遇到不是数字的符号,返回目前为止合格的数字,不需要考虑后面的数字;
如果数字overflow,大于MAX的要返回MAX,小于MIN 的要返回MIN;
etc。
Java Solution:
Runtime beats 57.67%
完成日期:01/09/2017
关键词:String
关键点:考虑到所有违规情况
class Solution { public int myAtoi(String str) { long res = 0; // the res number to return. Note: res to return should be long and cast it to int when return it at the end. int sign = 1; // the sign before the number. default is 1 (positive). int index = 0; // index for num string to go through. // Step 0: if parameter str is null or "", then return 0. if(str.length() == 0 || str == null) return 0; // Step 1: trim the whitespace. str = str.trim(); // Step 2: check first char is '+' or '-', move the index by 1 and also sign value. if(str.charAt(0) == '+') index++; else if(str.charAt(0) == '-') { index++; sign = -1; // change the sign to -1 (negative). } // Step 3: go through the str string. for(; index<str.length(); index++) { // if this char is not a number char, then break. No matter there are more numbers after. if(str.charAt(index) > '9' || str.charAt(index) < '0') break; // add this char value into res. res = res * 10 + (str.charAt(index) - '0'); // char - '0' is the correct int value. // check the num exceed the max or not. if(res > Integer.MAX_VALUE) // res should be long because here res might be over Integer.max value. break; } // Step 4: depending on the sign and max or min value, return res. if(res * sign >= Integer.MAX_VALUE) return Integer.MAX_VALUE; else if(res * sign <= Integer.MIN_VALUE) return Integer.MIN_VALUE; // goes here meaning the res number doesn't exceed max and min integer value. return (int)res * sign; // here need to cast res to int. } }
参考资料:N/A
LeetCode 题目列表 - LeetCode Questions List
题目来源:https://leetcode.com/
相关文章推荐
- leetcode String to Integer (atoi) 字符串转整数
- [LeetCode-8] String to Integer (atoi,字符串转成整数)
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- 【LeetCode】8. String to Integer (atoi) 字符串转换为整数
- LeetCode 8. String to Integer (atoi)(字符串转整数)
- LeetCode String to Integer (atoi) 字符串转换整数
- leetcode:String to Integer (atoi) 字符串转化成整数
- 【LeetCode-面试算法经典-Java实现】【008-String to Integer (atoi) (字符串转成整数)】
- [LeetCode] String to Integer (atoi) 字符串转为整数
- [LeetCode] 8. String to Integer (atoi) 字符串转为整数
- leetcode8- String to Integer (atoi 字符串转整数)
- String to Integer (atoi字符串转换为整数)
- Leetcode 08 String to Integer (atoi)(实现c++atoi即字符串转数字的功能)
- leetcode——String to Integer (atoi) 字符串转换为整型数(AC)
- leetcode 8. String to Integer (atoi) 字符串转数字
- leetCode 8. String to Integer (atoi) (字符串转整形) 解题思路和方法
- leetcode-8-String to Integer (atop)字符串转整数
- leetCode 8. String to Integer (atoi) 字符串
- (LeetCode)String to Integer (atoi) --- ascii 转换为 整数
- leetcode——8 String to Integer (atoi)(自定义字符串转整型,如何避开各种奇葩输入)