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.
这个题也是要注意很多情况。题目中描述得很清楚,按照题目中来进行判断。
public class Solution
{
public int atoi(string str)
{
//max int32:2147483647 min int32:-2147483648
if (str == "") return 0;
long anstemp = 0;
int ans = 0, i = 0, flag1 = 0, flag2 = 0;
//flag1:flag- flag2:flag+
while (str[i] != '\0' && str[i] == ' ') i++;
if (str[i] == '-')
{
flag1++;
i++;
}
else if (str[i] == '+')
{
flag2++;
i++;
}
for (; i < str.Length; i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
if (flag1 == 2)
{
anstemp = anstemp * 10 - (str[i] - '0');
if (anstemp < -2147483648) return -2147483648;
}
else if (flag1 == 1)
{
anstemp = -str[i] + '0';
flag1++;
}
else
{
anstemp = anstemp * 10 + (str[i] - '0');
if (anstemp > 2147483647) return 2147483647;
}
}
else break;
}
ans = Convert.ToInt32(anstemp);
return ans;
}
}