剑指offer 面试67题

面试67题:

题目:

链接:https://www.nowcoder.com/questionTerminal/1277c681251b4372bdef344468e4f26e?commentTags=Python
来源:牛客网

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0

输入描述:
输入一个字符串,包括数字字母符号,可以为空
输出描述:
如果是合法的数值表达则返回该数字,否则返回0
示例1

输入

+2147483647
    1a33

输出

2147483647
    0

解法一:如果可以利用Python自带的字符串转整数的库函数,那么有

# -*- coding:utf-8 -*-
class Solution:
    def StrToInt(self, s):
        # write code here
        try:
            return int(s)
        except:
            return 0
        

解法二:只需考虑清楚怎么处理特殊的情况就可。

# -*- coding:utf-8 -*-
class Solution:
    def StrToInt(self, s):
        # write code here
        numstrs=['0','1','2','3','4','5','6','7','8','9']
        sum = 0
        label=1
        for i in range(len(s)):
            if i==0:
                if s[i]=='-':
                    label=-1
                    continue
                elif s[i]=='+':
                    continue
            if s[i] in numstrs:
                sum =sum*10+numstrs.index(s[i])
            
            else:
                sum = 0
                break
        return sum*label
        
原文地址:https://www.cnblogs.com/yanmk/p/9133543.html