"""
现在有一个只包含数字的字符串,将该字符串转化成IP地址的形式,返回所有可能的情况。
例如:给出的字符串为"25525522135",
返回["255.255.22.135", "255.255.221.35"]. (顺序没有关系)
"""
def restoreIpAddresses( s ):
IP = []
merge = '.'
data1 = [s[:3],s[3:6],s[6:9],s[9:]]
IP1 = merge.join(data1)
IP.append(IP1)
data2 = [s[:3],s[3:6],s[6:8],s[8:]]
IP2 = merge.join(data2)
IP.append(IP2)
return IP
s = "25525522135"
restoreIpAddresses( s )
"""
将给定的单链表,要求使用原地算法,不能只改变节点内部的值,需要对实际的节点进行交换。
例如:对于给定的单链表{10,20,30,40},将其重新排序为{10,40,20,30}.
"""
def reorderList( head ):
new_head = []
head1 = sorted(head,reverse=True)
if len(head)%2!=0:
import math
for i in range(math.ceil(len(head)*0.5)):
new_head.append(head[i])
new_head.append(head1[i])
new_head = list(new_head)
else:
for i in range(int(len(head)*0.5)):
new_head.append(head[i])
new_head.append(head1[i])
new_head = list(new_head)
return new_head
head = [10,20,30,40]
reorderList( head )
"""
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:给出的链表为[1,1,2,],返回[1,2].
给出的链表为[1,1,2,3],返回[1,2,3].
"""
def deleteDuplicates( head ):
for i in head:
if head.count(i)>1:
head.remove(i)
return head
head = [1,1,2]
deleteDuplicates( head )
"""
给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。
例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,
他们的最大值分别为{4,4,6,6,6,5}; 针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:
{[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1},
{2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1}, {2,3,4,2,6,[2,5,1]}。
窗口大于数组长度的时候,返回空
"""
def maxInWindows(num, size):
maxInWindows = []
if len(num) >= size:
for i in range(len(num)):
if i + size <= (len(num)):
maxInWindows.append(max(num[i:i + size]))
else:
break
else:
print("Please set size of windows less than size of num!")
return maxInWindows
num = [2, 3, 4, 2, 6, 2, 5, 1]
maxInWindows(num, 3)
"""
编写一个函数来查找字符串数组中的最长公共前缀。
"""
def longestCommonPrefix(strs):
"""
:type strs: List[str]
:rtype: str
"""
if len(strs) == 0:
return ''
elif len(strs) == 1:
return strs[0]
else:
b = sorted(strs, key=lambda x:len(x))#按字符串的长度进行排序b = ['a', 'abc', 'abca', 'abca', 'abcc']
s = ''
s1 = b[0]#a
for i, v in enumerate(s1): #对第一个字符串进行枚举,遍历其每一个字符
l = []
for j in b[1:]: #从第二个字符串开始遍历之后的所有字符串
l.append(v==j[i]) #将字符比较的bool值添加到列表l中
if all(l): #如果列表l中的所有值都为True
s += v #s = s + v
else:
break
return s
strs = ["abca", "a", "abca", "abc", "abcc"]
longestCommonPrefix(strs)
特别注明:本文属于牛客答题Python学习笔记,不以盈利为目的,纯手工码字不容易,若整理的笔记中,对您有所助益,麻烦点个赞或者收藏,万分感谢!如有构成侵权的地方,请联系作者删除,谢谢合作!