如何修改循环逻辑实现最长公共后缀(Longest Common Suffix)求解
修改代码实现最长公共后缀
需求说明
实现函数 LongestCommonSuffix,输入单词数组,返回所有单词的最长公共后缀。例如调用 LongestCommonSuffix(['celebration', 'opinion', 'decision', 'revision']),需输出 "ion"。
原前缀代码分析
你提供的代码是求解最长公共前缀的实现,核心逻辑是从前往后逐个字符比对所有单词的对应位置。要改成求后缀,只需调整遍历方向,从每个单词的末尾开始比对。
修改后的代码
def LongestCommonSuffix(strs): res = '' # 处理空输入的边界情况 if not strs: return res # 从倒数第1个字符开始,遍历到第1个字符 for i in range(1, len(strs[0]) + 1): current_char = strs[0][-i] for s in strs: # 如果当前单词长度不足i,或者字符不匹配,返回当前结果 if i > len(s) or s[-i] != current_char: return res # 把匹配的字符加到结果的前面,构建后缀 res = current_char + res return res
代码修改点说明
- 遍历方向调整:循环从
1到len(strs[0]),通过负索引-i获取每个单词的倒数第i个字符 - 匹配条件修改:判断当前单词长度是否小于
i(即没有对应的倒数第i个字符),或者字符不匹配时,立即返回当前结果 - 结果构建方式:因为是从后往前匹配字符,每次要把匹配的字符加到结果字符串的前面,才能得到正确的后缀顺序
测试示例
print(LongestCommonSuffix(['celebration', 'opinion', 'decision', 'revision'])) # 输出: ion
内容的提问来源于stack exchange,提问作者Shox
相关产品推荐
相关产品推荐

