题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
思路
首先判断该数字是整数还是负数,然后在转换的过程中判断字符串表示的数字是否溢出。题目的数字范围是有符号的int型整数,有符号的int型整数(4个字节)的范围为-2147483648 ~ +2147483647,也就是-0x80000000~0x7FFFFFFF。代码如下:
class Solution {
public:
int StrToInt(string str) {
if(str.empty())
return 0;
bool isNeg = false; // 标记是否为负数
bool index0IsNum = true; //标记第一位是否为数字
if(str[0]<‘0‘ || str[0]>‘9‘){
if(str[0]==‘-‘)
isNeg = true;
index0IsNum = false;
}
int start = index0IsNum? 0:1; //起始的遍历位置
long long num = 0;
for(int i=start; i<str.length(); i++){
if(str[i]>=‘0‘ && str[i]<=‘9‘){
num = num*10 + str[i] - ‘0‘;
if((!isNeg && num>0x7FFFFFFF) || (isNeg && num>0x80000000))
return 0;
}
else return 0;
}
if(isNeg)
return -num;
else return num;
}
};
原文地址:https://www.cnblogs.com/flix/p/12560660.html
时间: 2024-11-08 12:14:29