LeetCode Online Judge 题目C# 练习 - String to Integer (atoi)
2012-10-18 00:44
519 查看
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, 最重要是讨论输入的validation。怎么样的输入才是合法输入,如果碰到不合法的字符,返回什么东西。而且还要处理一下overflow。
当然主要逻辑就是这一句了val = val * 10 + str[i] - '0';
我这里是按照LeetCode上的Test Case 写的, 迎合大牛的口味。但是面试的时候要跟面试官详细讨论。
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.
public static int StringtoInteger(string str) { int i = 0; int sign = 0; int val = 0; while (i < str.Length && ((str[i] >= '0' && str[i] <= '9') || str[i] == ' ' || str[i] == '-' || str[i] == '+')) { if ((val == 0 && sign == 0) && str[i] == ' ') i++; else if (str[i] == '-' && sign == 0) { sign = -1; i++; } else if (str[i] == '+' && sign == 0) { sign = 1; i++; } else if (str[i] >= '0' && str[i] <= '9') { //handle overflow, val * 10 + n > int.MaxValue if (val > (int.MaxValue - (str[i] - '0')) / 10) { if (sign == 0 || sign == 1) return int.MaxValue; return int.MinValue; } val = val * 10 + str[i] - '0'; i++; } else { if (sign == 0) return val; return val * sign; } } if (sign == 0) return val; return val * sign; }
代码分析:
atoi, 最重要是讨论输入的validation。怎么样的输入才是合法输入,如果碰到不合法的字符,返回什么东西。而且还要处理一下overflow。
当然主要逻辑就是这一句了val = val * 10 + str[i] - '0';
我这里是按照LeetCode上的Test Case 写的, 迎合大牛的口味。但是面试的时候要跟面试官详细讨论。
相关文章推荐
- LeetCode Online Judge 题目C# 练习 - Divid Two Integer
- LeetCode Online Judge 题目C# 练习 - Count and Say
- LeetCode题目: 8. String to Integer (atoi)
- LeetCode Online Judge 题目C# 练习 - Decode Way
- LeetCode Online Judge 题目C# 练习 - Subsets
- LeetCode Online Judge 题目C# 练习 - Two Sum
- LeetCode Online Judge 题目C# 练习 - Length of Last Word
- LeetCode Online Judge 题目C# 练习 - Maximal Rectangle
- LeetCode Online Judge 题目C# 练习 - Minimum Window Substring
- LeetCode Online Judge 题目C# 练习 - Plus One
- LeetCode Online Judge 题目C# 练习 - Subsets II
- LeetCode Online Judge 题目C# 练习 - Add two number
- LeetCode Online Judge 题目C# 练习 - Binary Tree Inorder Traversal
- LeetCode Online Judge 题目C# 练习 - Pow(x, n)
- LeetCode Online Judge 题目C# 练习 - 4SUM
- LeetCode Online Judge 题目C# 练习 - Climbing Stairs
- LeetCode Online Judge 题目C# 练习 - Edit Distance
- LeetCode Online Judge 题目C# 练习 - Unique Binary Search Trees II
- LeetCode Online Judge 题目C# 练习 - Integer to Roman
- LeetCode Online Judge 题目C# 练习 - Anagrams