Python3,连接字符串

时间:2018-01-20 20:17:17

标签: python string python-3.x list

我是新来的,也是Python新手。所以,这是我的问题,我真的不知道从哪里开始。我创建了一个列表并写了liste.add(str(input('input a string')))。你能帮助我吗,谢谢。

我有N strings,目标是通过连接其中一些字符串来获得最大分数。如果我们想在字符串" A" 之后添加字符串" B" ,则应符合以下规则:

" A" 应按字典顺序小于" B"

" A" (最小长度为1)的某些后缀应与" B" 。例如:字符串“abaca”的最后三个字符与字符串“acaba”的前三个字符相同。

●在连接字符串" A" " B" 之后,我们获得的点数等于其重叠长度(3例如上面)

  

范围1≤N≤500

     

1≤| Si | ≤500(任何字符串的长度)

输入格式:

在第一行会有数字(字符串数)。下一行会有我们拥有的字符串(所有字符串只包含小写的英文字符)

输出格式:

在单行中,打印用户可以获得的最大分数。

  

示例输入:4 a ba ab acaba

     

样本输出:3

说明:

使用 a - acaba - ba 订单,用户可获得1 + 2 = 3分。

1 个答案:

答案 0 :(得分:0)

首先,我继续前进,并在我的机器中运行一些示例代码以满足您的输入需求。我还冒昧地添加了一些附加功能,以确保完全满足您的输入要求。以下是我的结果:

import itertools
n = int(input('Number of strings: '))
while n not in range(1,501):
    print('Error, new number needed')
    n = int(input('Number of strings: '))
strings = []
a = 0
for i in range(0,n):
    string = str(input('String: '))
    while len(strings[a]) < len(string):
        print('Error: new string must be longer than previous input')
        string = str(input('String: '))
    strings.append(string)

如果你注意到,我导入了itertools。这是因为如果您想要列表中的每个字符串组合,itertools将帮助您完成这些工作。我还提供了Get every combination of strings上的代码(如果你点击它,它会带你到页面),他们会在这个主题上讨论。我不是itertools的专业人士,但希望所附的代码应该是一个很好的飞跃:

S = set(['a', 'ab', 'ba'])

collect = set()
step = set([''])
while step:
    step = set(a+b for a in step for b in S if len(a+b) <= 6)
collect |= step

print sorted(collect)

如果您有任何其他问题,请告诉我。快乐的节目!