1、在一个序列中找到两个数使得和等于目标值|||2、最大子序列和问题3、找出字符串的最长不重复连续子串

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"))

猜你喜欢

转载自blog.csdn.net/qq_34514046/article/details/82048431