题目:
Implement atoi to convert a string to an integer.
注意问题:
1. 判断字符串是否为空字符串;
2. long long 范围:[–9,223,372,036,854,775,808 - 9,223,372,036,854,775,807];
3. 注意:不要漏了要判断+号的情况 ;
4. isdigit--- 测试字符串 *str 是否具有数字特征;
5. 字符串的ASK码减去‘0’的ASK码即为该数字的大小;
6. 字符串从前到后排序得到数字(例如:“123”为:1,1*10+2,(1*10+2)*10+3)。
实现代码:
class Solution
{
public:
int myAtoi(string str)
{
if (str.empty())
{
return 0;
}
// if(*str == '\0') //注意:判断空字符串数组
// {
// return 0;
// }
long long llnum = 0; //long long 范围:[–9,223,372,036,854,775,808 - 9,223,372,036,854,775,807]
int sign = 1;
int index=0;
while (str[index] == ' ')
{
index++;
}
if (str[index] == '-')
{
sign = -1;
index++;
}
else if(str[index] == '+') //注意:不要漏了要判断+号的情况
{
index++;
}
while (isdigit(str[index])) //isdigit--- 测试字符串 *str 是否具有数字特征
{
int i = str[index] - '0'; //ASK码相减得到数字
llnum = llnum*10 + i; //字符串从前到后排序得到数字(例如:“123”为:1,1*10+2,(1*10+2)*10+3);
if (llnum*sign > INT_MAX)
{
llnum = INT_MAX;
break;
}
else if (llnum*sign < INT_MIN)
{
llnum = INT_MIN;
break;
}
index++;
}
return int(sign*llnum);
}
};