Python:把字符串转换成整数

时间:2021-11-19 01:47:48


牛客网上的剑指 offer的在线编程:

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
# -*- coding:utf-8 -*-
'''
把字符串转换成整数
题目描述
将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0
'''
class Solution:
# 方法一:
def StrToInt(self, s):
if len(s) == 0:
return 0
if s[0] > '9' or s[0] < '0':
res = 0
else:
res = int(s[0]) * pow(10, len(s) - 1)
if len(s) > 1:
for i in range(1, len(s)):
if s[i] <= '9' and s[i] >= '0':
res += int(s[i]) * pow(10, len(s) - 1 - i)
else:
return 0
if s[0] == '+':
return res
elif s[0] == '-':
return -res
else:
return res
# 方法二:

def StrToInt1(self, s):
num = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
sym = ['+', '-']
if len(s) == 0:
return 0
elif s[0] in sym:
for i in range(1, len(s)):
if s[i] not in num:
return 0
res = 0
for i in range(1, len(s)):
temp = int(s[i]) * pow(10, len(s) - 1 - i)
res += temp
if s[0] is '+':
return res
else:
return 0 - res
else:
if len(s) == 1 and s[0] == '0':
return 0
for i in range(len(s)):
if s[i] not in num:
return 0
res = 0
for i in range(len(s)):
temp = int(s[i]) * pow(10, len(s) - 1 - i)
res += temp
return res