📅  最后修改于: 2023-12-03 15:37:15.597000             🧑  作者: Mango
这个问题是ISRO CS 2017考试中的一道编程题,要求编写一个程序来查找一组字符串中最长的匹配子串。如果有多个最长匹配子串,则输出第一个。
给定一个字符串数组,编写程序查找其中最长的匹配子串。如果有多个最长匹配子串,则输出第一个。
输入格式:
第一行为字符串数组中的字符串数量n。
接下来的n行每行一个字符串。
输出格式:
一个字符串,表示最长匹配子串。
示例:
输入:
5
abcdefg
efghijk
cdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
ghijklmnopqrstuvwxyzabcdef
输出:
cdefghijklmnopqrstuvwxyz
可以使用python的字符串模块提供的方法来匹配字符串:find和index。
可以将第一个字符串的所有子串分别与其他的字符串进行匹配,找到最长的匹配子串即可。
下面是python的实现代码,实现方式有多种,可以根据自己的习惯进行修改。
def longest_common_substring(s):
"""
找到一组字符串中的最长匹配子串
"""
n = len(s)
if n < 2:
return s[0]
# 字符串最小长度
min_len = min(len(i) for i in s)
# 查找最长匹配子串
res = ""
for i in range(min_len):
for j in range(i+1, min_len+1):
if all(s[0][i:j] in m for m in s[1:]):
if len(s[0][i:j]) > len(res):
res = s[0][i:j]
return res
if __name__ == "__main__":
n = int(input("请输入字符串数量:"))
s = []
for i in range(n):
s.append(input())
res = longest_common_substring(s)
print("最长匹配子串是:{}".format(res))
以上实现只是一种思路,可以根据具体需求选择不同的算法以及数据结构实现。