LINTCODE——转换字符串到整数
思路:并不是特别难,主要把情况考虑到就好了,如果开始计算数值,那么之后出现的所有非数值元素,直接输出结果,还有再每次得到res的值之后都进行一次检查,防止long long型溢出;
class Solution {
public:
/*
* @param str: A string
* @return: An integer
*/
int atoi(string &str) {
// write your code here
if(str.empty())
return 0;
int n = str.size();
long long res = 0 ;
bool c = true;
long long flag = 1;
for( int i = 0; i < n ;i++)
{
if(check(str[i]))
{
//如果开始计算,标记C,之后出现任何的非数字,直接输出
c = false;
res = res * 10 + str[i]-'0';
if(res*flag > INT_MAX)
return INT_MAX;
if(res*flag < INT_MIN)
return INT_MIN;
}
else if(c)
{
if(str[i] == '-' || str[i] == '+')
{
if(str[i] == '-' && flag == 1)
flag = -1;
//标记c为FALSE
c = false;
}
else if(str[i] == ' ')
continue;
else
return res*flag;
}
else
return res*flag;
}
return (int)(res*flag);
}
//判定a字符串是不是一个数
bool check(char a)
{
if( a >= '0' && a <= '9')
return true;
else
return false;
}
};