牛客-剑指offer系列题解:把字符串转化成整数

记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。
1、问题描述:
输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)

2、数据结构:
字符串

3、题解:
考虑多种情况,空串,负值,越界,非法字符串

# -*- coding:utf-8 -*-
class Solution:
    def StrToInt(self, s):
        # write code here
        str = s.strip()#删除首尾空格
        if not s:
            return 0 #字符串为空,则直接返回
        res,i,flag,maxv = 0,1,1,2 ** 31 - 1
        if s[0] == '-':
            flag = -1 #保存负号
        elif s[0] != '+':
            i = 0 # 如果无符号位,则需从i = 0开始数字拼接
        for c in s[i:]:
            if not '0' <= c <= '9':#遇到非数字字符,返回0
                return 0
            res = res * 10 + ord(c) - ord('0')#数字拼接
            print(res)
            if flag == 1 and res > maxv:
                return 0  # 越界处理
            if flag == -1 and -res < -maxv - 1:
                return 0  # 越界处理
        return flag * res

4、复杂度分析:

时间复杂度:O(N)

空间复杂度:O(N)

你可能感兴趣的:(牛客-剑指offer系列题解)