记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用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)