查找两个字符串首尾交叉的最大子串长度,连接两个字符串,首尾交叉部分只保留一份。例如,1234和2347连接为12347(要求:程序中使用lambda表达式以及函数)

  • 时间:
  • 浏览:
  • 来源:互联网

未使用lambda表达式的代码:

def check(s1, s2):
    length1 = len(str1)
    length = min(length1, len(str2))
    for k in range(length, -1, -1):
        if str1[length1-k:] == str2[:k]:
            break
    return(k, str1 + str2[k:])  # k为重复字符的个数
str1 = '1234'
str2 = '2347'
print(str1, str2)
print(check(str1, str2))

使用lambda表达式的代码:

def check(str1, str2):
    length1 = len(str1)
    length = min(length1, len(str2))
    k = max(range(0, length+1), key=lambda i: i if str1[length1-i:] == str2[:i]else False)
    return(k,str1+str2[k:]) # k为重复字符的个数
str1 = '1234'
str2 = '2347'
print(str1, str2)
print(check(str1, str2))

注:关于max函数中key的用法:
例1.

list = [1, 3, -10, 5, 8, 6]
print(max(list, key=abs))
# 输出结果为  -10

获取list中绝对值最大的元素。key关键字的作用是,对每个list元素先使用key指定的function来处理,然后再比较、返回预期的元素。

例2.(key参数的值也可以使用自定义函数。)

def func(n):
    return abs(n)
list = [1, 3, -10, 5, 8, 6]
print(max(list, key=func))
# 输出结果为 -10

例3.(对于简单的方法,一般使用lambda表达式。)

list = [1, 3, -10, 5, 8, 6]
print(max(list, key=lambda x: abs(x)))
# 输出结果为 -10

参考文章:
(1)https://cloud.tencent.com/developer/article/1399659
(2)https://www.cnblogs.com/zhangwei22/p/9892422.html

本文链接http://element-ui.cn/article/show-218947.aspx