1、在一个序列中找到两个数使得和等于目标值
#! /usr/bin/python
# -*-coding:utf-8 -*-
__author__ = "chunming"
def twoSum(list1,target):
list2=[]
for i in range(len(list1)):
for j in range(i+1,len(list1)):
if list1[i]+list1[j]==target:
list2.append((i,j))
return list2
if __name__=="__main__":
list3=[3,1,6,6,7,8,8,0,9]
print(twoSum(list3,9))
2、找出无序序列的最大子序列的和
#! /usr/bin/python
# -*-coding:utf-8 -*-
__author__ = "chunming"
def subSum(list1):
maxsum=list1[0]#用于记录最大值
for i in range(len(list1)):
temp=list1[i]#temp用于标记内循环的子序列和,用于和maxsum做比较
for j in range(i+1,len(list1)):
temp+=list1[j]
if maxsum<temp:
maxsum=temp
return maxsum
if __name__=="__main__":
print(subSum([2,-5,3,7,1,-3]))
3、最长不重复连续子串
#! /usr/bin/python
# -*-coding:utf-8 -*-
__author__ = "chunming"
#abcddefghd==============>defgh
#123341251==============>34125
def maxStr(str):
maxSub=str[0]#用于返回最大子序列
for i in range(len(str)):
maxtemp=str[i]#用于记录后面子串的最大子序列,便于和maxSub比较长度
for j in range(i+1,len(str)):
if str[j] not in maxtemp:
maxtemp+=str[j]
if len(maxtemp)>len(maxSub):
maxSub=maxtemp
elif str[j] in maxSub:
break
return maxSub
if __name__=="__main__":
print(maxStr("abcddefghd"))
print(maxStr("123341251"))