LeetCode Online Judge 题目C# 练习 - String to Integer (atoi)

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.

 1         public static int StringtoInteger(string str)

 2         {

 3             int i = 0;

 4             int sign = 0;

 5             int val = 0;

 6 

 7             while (i < str.Length && ((str[i] >= '0' && str[i] <= '9') || str[i] == ' ' || str[i] == '-' || str[i] == '+'))

 8             {

 9                 if ((val == 0 && sign == 0) && str[i] == ' ')

10                     i++;

11                 else if (str[i] == '-' && sign == 0)

12                 {

13                     sign = -1;

14                     i++;

15                 }

16                 else if (str[i] == '+' && sign == 0)

17                 {

18                     sign = 1;

19                     i++;

20                 }

21                 else if (str[i] >= '0' && str[i] <= '9')

22                 {

23                     //handle overflow, val * 10 + n > int.MaxValue

24                     if (val > (int.MaxValue - (str[i] - '0')) / 10)

25                     {

26                         if (sign == 0 || sign == 1)

27                             return int.MaxValue;

28                         return int.MinValue;

29                     }

30                     val = val * 10 + str[i] - '0';

31                     i++;

32                 }

33                 else

34                 {

35                     if (sign == 0)

36                         return val;

37                     return val * sign;

38                 }

39             }

40             if (sign == 0)

41                 return val;

42             return val * sign;

43         }

代码分析:

  atoi, 最重要是讨论输入的validation。怎么样的输入才是合法输入,如果碰到不合法的字符,返回什么东西。而且还要处理一下overflow。

  当然主要逻辑就是这一句了val = val * 10 + str[i] - '0';

  我这里是按照LeetCode上的Test Case 写的, 迎合大牛的口味。但是面试的时候要跟面试官详细讨论。

你可能感兴趣的:(LeetCode)