剑指offer 把字符串转换成整数
问题描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
C++代码实现
思路:遍历字符串,将每个转化为数字,遇到非数字就返回0
class Solution {
public:
int StrToInt(string str) {
if (str.length() == 0)
{
return 0;
}
int i = 0;
int flag = 1;
if (str[i] == '-' || str[i] == '+')
{
if (str[i] == '-')
{
flag = -1;
}
i++;
}
else if (str[i] < '0' || str[i] > '9')
{
return 0;
}
int num = 0;
while (i < str.length())
{
if (str[i] > '0' && str[i] < '9')
{
num = num * 10 + str[i] - '0';
i++;
}
else
{
return 0;
}
}
return num * flag;
}
};
python2代码实现
思路:去除第一位符号,剩余串强转为数字,强转失败返回0,成功返回数组
# -*- coding:utf-8 -*-
# -*- coding:utf-8 -*-
class Solution:
def StrToInt(self, s):
# write code here
if not s:
return 0
flag = 1
if s[0] == '-' or s[0] == '+':
if s[0] == '-':
flag = -1
s = s[1:]
try:
num = int(s)
except:
return 0
return num * flag