当前位置: 首页 > ds >正文

OD 算法题 B卷【最长公共后缀】

文章目录

  • 最长公共后缀

最长公共后缀

  • 查找字符串数组中的最长公共后缀,如果不存在公共后缀,则返回‘@Zero’;
  • 字符串长度范围为【2, 1000】;
  • 字符串中字符ascii码值为【1, 126】;

示例1
输入:
[“abc”, “bbc”, “c”]
输出:
“c”

示例2
输入:
[“aa”, “bb”, “cc”]
输出:
“@Zero”

python实现:

  • 所有字符串按照长度升序排序;
  • 取第一个最短的字符串,双指针截取子串,并判断是否为列表中剩余字符串的公共后缀部分;
  • 取一个最长的公共子串;
def is_demand(sub_str):""" 当前子串是否在列表中的每个字符串中 """global string_listreturn all([True if s.endswith(sub_str) else False for s in string_list])string_list = eval(input())
# 按照长度排序
string_list.sort(key=lambda i: len(i))# 取第一个最短的字符串
start = string_list.pop(0)
start_len = len(start)
tgt = ""
pre = 0  # 单指针
while pre < start_len:sub_str = start[pre:]  # 公共后缀if is_demand(sub_str):tgt = sub_strbreakpre += 1if tgt:print(tgt)
else:print("@Zero")

其他方案:

  • 初始化一个主动比较的字符串;
  • 假如公共后缀xx存在,则 任意两个字符串的公共后缀长度一定大于等于该xx的长度;

# 解析输入的字符串为数组
string_list = input().replace("[", "").replace("]","").replace("\"", "").split(",")flag = True
# 取第一个字符串
result = string_list[0]# 遍历后续的字符串
for i in range(1, len(string_list)):length1 = len(result)length2 = len(string_list[i])j = 1# 两个字符串,比较最后一个字符while length1 >= j and length2 >= j and result[length1 - j] == string_list[i][length2 - j]:j += 1# 当前两个字符串没有公共后缀,则结束if j == 1:flag = Falsebreak# 取当前两个字符串的公共后缀result = result[length1 - j + 1:]if flag:print(result)
else:print("@Zero")
http://www.xdnf.cn/news/8879.html

相关文章:

  • C++修炼:哈希表的模拟实现
  • 【python实战】-- 选择解压汇总mode进行数据汇总20250525更新(篇幅2)
  • 塔能科技:以多元技术赋能全行业能耗节能转型
  • 力扣刷题(第三十七天)
  • Linux之概述和安装vm虚拟机
  • Oracle附加日志概述
  • Day 31 训练
  • 哪款云手机支持安卓12系统?掌派云手机-性价比之选
  • Threejs 透明模型渲染嵌套以及深度测试解决共存问题
  • 什么是ESLint?它有什么作用?
  • 10G/25G PCS only mode for CoaXPress Over Fiber
  • 9. Spring AI 各版本的详细功能与发布时间整理
  • 华为OD机试真题——出租车计费/靠谱的车 (2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Spring Cloud Sleuth与Zipkin深度整合指南:微服务链路追踪实战
  • Python实战:轻松连接与高效操作Elasticsearch
  • HDFS存储原理与MapReduce计算模型
  • 嵌入式学习笔记——day27
  • 奈雪小程序任务脚本
  • 计算机病毒的发展历程及其分类
  • Lua 脚本在 Redis 中的运用-22
  • leetcode 39. Combination Sum和40. Combination Sum II
  • 容器化:用于机器学习的 Docker 和 Kubernetes
  • 正则表达式全解:一文学会正则表达式【附在线正则表达式练习网站】
  • Android事件分发学习总结
  • SpringBoot-配置文件
  • MLA:Transformer的智能变形金刚——解密多头潜在注意力的进化密码
  • Linux `|` 管道操作符深度解析与高阶应用指南
  • Leetcode 刷题记录 11 —— 二叉树第二弹
  • BTC官网关注巨鲸12亿美元平仓,XBIT去中心化交易平台表现稳定
  • 深入理解设计模式之建造者模式