您的位置:首页 > 编程语言 > C#

【LeetCode】C# 8、String to Integer (atoi)

2017-10-08 08:13 399 查看
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.

解题思路在于滤去不合法输入后,通过 val = val * 10 + str[i] - ‘0’ 一位一位的将之转化为 int。

public class Solution {
public int MyAtoi(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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode c#