Skip to main content
 首页 » 编程设计

python之最长的 k 个连续字符串

2025年05月04日36mayingbao

我正在定义一个 Python 函数来确定最长的字符串,如果将原始字符串组合为每 k 个连续的字符串。该函数有两个参数,strar 和 k。

这是一个例子:

max_consec(["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"], 2) --> "abigailtheta"

到目前为止,这是我的代码(直觉是我没有在函数中正确传递 k)

def max_consec(strarr, k): 
    lenList = [] 
    for value in zip(strarr, strarr[k:]): 
        consecStrings = ''.join(value) 
        lenList.append(consecStrings) 
    for word in lenList:  
        if max(word): 
            return word 

这是一个没有通过的测试用例:

测试(longest_consec([“zone”,“abigail”,“theta”,“form”,“libe”,“zas”],2),“abigailtheta”)

我的输出:

'zonetheta' should equal 'abigailtheta' 

请您参考如下方法:

我不太清楚“每 k 个连续的字符串”是什么意思,但是如果您的意思是获取列表的 k 长度切片并将每个切片中的所有字符串连接起来,例如

['a', 'bb', 'ccc', 'dddd']  # k = 3 

成为

['a', 'bb', 'ccc'] 
['bb', 'ccc', 'dddd'] 

然后

'abbccc' 
'bbcccddd' 

那么这行得通...

# for every item in strarr, take the k-length slice from that point and join the resulting strings 
strs = [''.join(strarr[i:i + k]) for i in range(len(strarr) - k + 1)] 
 
# find the largest by `len`gth 
max(strs, key=len) 

this post给出了替代方案,尽管其中一些难以阅读/冗长