字符串转整数
/*
2022年09月18日 17:54:36
把每一个数取下来,乘上对应的10的len-1次方
"+123" --> "0123"
0 --> 0
1 * 10^2 --> ret = 100
2 * 10^1 --> ret = 120
3 * 10^0 --> ret = 123
*/
class Solution {
public:
int StrToInt(string str) {
if (str == "")
return 0;
int len = str.size();
long long ret = 0;
bool flag = true; // 由于之后还需要从第一个字符开始遍历,因此判断正负之后将str[0]置为'0'就不会影响了
if (str[0] == '-') {
str[0] = '0';
flag = false;
}
if (str[0] == '+') {
str[0] = '0';
flag = true;
}
for (int i = 0; i < str.size(); ++i) {
if (str[i] < '0' || str[i] > '9') // 特殊字符,排除了正负号
return 0;
if (str[i] >= '0' && str[i] <= '9') {
long long tmp = (str[i] - '0') * pow(10, len - 1);
--len;
ret += tmp;
}
}
if (flag == false)
ret *= -1;
return ret;
}
};
利用ret = ret*10 + str[i] - '0';逐个累加ret。
/*
2022年09月18日 18:09:59
"+123" --> "0123"
ret = ret*10 + str[i] - '0';
0
1
10+2 --> 12
120 + 3 --> 123
*/
class Solution {
public:
int StrToInt(string str) {
if (str == "")
return 0;
long long ret = 0;
bool flag = true; // 由于之后还需要从第一个字符开始遍历,因此判断正负之后将str[0]置为'0'就不会影响了
if (str[0] == '-') {
str[0] = '0';
flag = false;
}
if (str[0] == '+') {
str[0] = '0';
flag = true;
}
for (int i = 0; i < str.size(); ++i) {
if (str[i] < '0' || str[i] > '9') // 特殊字符,排除了正负号
return 0;
if (str[i] >= '0' && str[i] <= '9') {
ret = ret*10 + str[i] - '0';
}
}
if (flag == false)
ret *= -1;
return ret;
}
};

京公网安备 11010502036488号