LeetCode 8. String to Integer

        public int MyAtoi(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return 0;
            }
            int sign = 1;
            int i = 0;
            for (; i < str.Length; ++i)
            {
                if (str[i] != ' ')
                {
                    break;
                }
            }
            if (str[i] == '+')
            {
                sign = 1;
                i++;
            }
            else if (str[i] == '-')
            {
                sign = -1;
                i++;
            }

            int digit = 0;
            for (; i < str.Length; ++i)
            {
                if (str[i] < '0' || str[i] > '9')
                {
                    break;
                }
                // overflow
                if (digit * sign > Int32.MaxValue / 10 ||
                    (digit * sign == Int32.MaxValue / 10 && (str[i] - '0') > Int32.MaxValue % 10))
                {
                    return Int32.MaxValue;
                }
                if (digit * sign < Int32.MinValue / 10 ||
                    (digit * sign == Int32.MinValue / 10 && (str[i] - '0') * sign < Int32.MinValue % 10))
                {
                    return Int32.MinValue;
                }

                digit = digit * 10 + (str[i] - '0');
            }

            return digit * sign;
        }

 

posted @ 2016-10-31 23:13  pzhang22  阅读(117)  评论(0编辑  收藏  举报