您的位置:首页 > 其它

lintcode:String to Integer II

2016-04-03 18:11 405 查看
Implement function
atoi
to convert a string to an integer.

If no valid conversion could be performed, a zero value is returned.

If the correct value is out of the range of representable values, INT_MAX (2147483647) or
INT_MIN (-2147483648) is returned.

Have you met this question in a real interview?

Example

"10" => 10
"-1" => -1
"123123123123123" => 2147483647
"1.0" => 1


Tags


class Solution {
public:
/**
* @param str: A string
* @return An integer
*/
int atoi(string str) {
// write your code here

if (str.size() == 0)
return 0;

int idx = 0;
while (idx < str.size())
if (str[idx] != ' ')
break;
else
idx++;

bool negativeFlag = false;
if (str[idx] == '+')
{
idx++;
}
else if (str[idx] == '-')
{
idx++;
negativeFlag = true;
}

double result = 0; //非常重要;

while (idx < str.size() && str[idx] >='0' && str[idx] <= '9')
{
result = result*10 + (str[idx]-'0');
idx++;
}

if (negativeFlag)
result = -1 * result;//这里需要先计算负数

if (result > INT_MAX)
return INT_MAX;
if (result < INT_MIN)
return INT_MIN;

return (int)result;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: