leetcode - 8. String to Integer (atoi)
2017-02-28 11:25
309 查看
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.
题目大意:实现atoi,考虑各种输入。
大致思路,直接看代码吧
结尾,附上microsoft的 itoa实现版本:
http://blog.csdn.NET/u013266102/article/details/58603255
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.
题目大意:实现atoi,考虑各种输入。
大致思路,直接看代码吧
class Solution { public: int myAtoi(string str) { int nNum = str.size(); int nTotal = 0; int temp = 0; int nSign = '+'; int i = 0; //用于溢出判断
//int的最大值 int int_max = (unsigned int)-1 / 2;
//int的最大值除以10 int temp_max = int_max / 10; //! 去除字符串前面的空格:' ','\t','\n','\r','\v','\f' while( (i < nNum) && isspace((int)str[i])) ++i; //! 如果第一个是正负号跳过它 if (str[i] == '+' || str[i] == '-'){ nSign = str[i]; ++i; /* //! 我觉得应该跳过它后面的空格,直到第一个非空格字符 //! 但题目认为正负号后面如果接空格直接返回 //! 不过int a = - 123;a却能识别为-123,比较尴尬。。 while( (i < nNum) && isspace((int)str[i])) ++i; */ } //! 检查是否为阿拉伯数字0到9,溢出则返回int的最大或最小值 while((i < nNum) && isdigit((int)str[i])){
//nTotal*10+str[i] - '0 temp = (nTotal<<3) + (nTotal<<1) + str[i] - '0'; ++i;
//如果nTotal比temp_max大,乘以10肯定溢出; 如果和突然少于0肯定溢出 if (nTotal > temp_max || temp < 0){ if (nSign == '+') return int_max; else return -int_max - 1; } else{ nTotal = temp; } } //!根据符号位返回正数或者负数 if (nSign == '+') return nTotal; else return -nTotal; } };
结尾,附上microsoft的 itoa实现版本:
http://blog.csdn.NET/u013266102/article/details/58603255
相关文章推荐
- leetcode 54: 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 54: 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] String to Integer (atoi)
- LeetCode - String to Integer (atoi)
- leetcode String to Integer (atoi)Dec 27 '117626 / 35090
- [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: String to Integer (atoi)