题意:
将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。
代码:
我的
class Solution {
public:
bool isValue(string str)
{
if (str[0] == '+')
{
for (int i = 1; i<str.size(); i++)
{
if (str[i]<'0' || str[i]>'9')
return false;
}
return true;
}
else if (str[0] == '-')
{
for (int i = 1; i<str.size(); i++)
{
if (str[i]<'0' || str[i]>'9')
return false;
}
return true;
}
for (int i = 0; i<str.size(); i++)
{
if (str[i]<'0' || str[i]>'9')
return false;
}
return true;
}
int StrToInt(string str) {
if (isValue(str))
{
int num = 0;
int flag = 1;
for (int i = 0; i<str.size(); i++)
{
if (str[i] == '+')
flag = 1;
else if (str[i] == '-')
flag = -1;
else
num = num * 10 + str[i] - '0';
}
return num*flag;
}
return 0;
}
};
别人的:
class Solution
{
public:
int StrToInt(string str) {
int flag = 1;
int num = 0;
if (str.size() == 0) return 0;
if (str[0] == '-') flag = -1;
for (int i = (str[0] == '+' || str[0] == '-') ? 1 : 0; i < str.size(); i++)
{
if (!(str[i] >= '0' && str[i] <= '9')) return 0;
num = num * 10 + str[i] - '0';
}
return num*flag;
}
};