【一个常规的算法,最长公共前缀,Python】

2023-11-02

@[TOC

给定一串字符串,要求提取其中重复率最高的字符串(不包含单字符串),

思路分析

采取分段进行遍历的方式,达到出现所有情况为止
"给定「abcabc」
固出现情况为:

[('ab', 2), ('bc', 2), ('abc', 2), ('ca', 1), ('bca', 1), ('cab', 1), ('abca', 1), ('bcab', 1), ('cabc', 1), ('abcab', 1), ('bcabc', 1), ('abcabc', 1)]

具体逻辑

'''先根据题意具体分析
要求输入不定长字符串,查找重复,不包含单字符串的情况下
起始长度为 2'''

'''将字符串具体进行切片思路
传入字符串进行按指定长度切片,但为保证最后一次切片不为空或不为单字符,固在指定
长度字符串的基础上进行减字符串的长度且因range方法问题,所以在长度上进行+1操作
最后将切片完成的字符串进行保存,代码如下'''
def Slice(ins_str,length):
    result_list = []
    for i in range(len(ins_str) - length + 1):
        result_list.append(ins_str[i:i + length])
    return result_list
'''如此是单间距的方法,延伸一下,进行遍历循环操作'''
glo_list = []
for i in range(2, len(ins_str) +1):
    ret_list = Slice(ins_str, i)
    glo_list += ret_list
'''循环操作完毕后,glo_list中保存的就是所有可以出现的情况
接下来进行统计方法,采用将出现的情况作为KEY 重复次数作为VALUE,以此进行统计,然后根据键值排序确定重复最高的字符串'''
for i in range(len(glo_list)):
    if glo_list[i] in glo_dict:
        glo_dict[glo_list[i]] += 1
    else:
        glo_dict[glo_list[i]] = 1

'''进行排序操作,转为可遍历的元祖数组后进行按重复数进行排序操作'''
result_dict = sorted(glo_dict.items(), key=lambda e: e[1], reverse=True)  # 倒序排序

'''
如上,输入 ”hello world“
结果,输出”[('he', 1), ('el', 1), ('ll', 1), ('lo', 1), ('o ', 1), (' w', 1), ('wo', 1), ('or', 1), ('rl', 1), ('ld', 1), ('hel', 1), ('ell', 1), ('llo', 1), ('lo ', 1), ('o w', 1), (' wo', 1), ('wor', 1), ('orl', 1), ('rld', 1), ('hell', 1), ('ello', 1), ('llo ', 1), ('lo w', 1), ('o wo', 1), (' wor', 1), ('worl', 1), ('orld', 1), ('hello', 1), ('ello ', 1), ('llo w', 1), ('lo wo', 1), ('o wor', 1), (' worl', 1), ('world', 1), ('hello ', 1), ('ello w', 1), ('llo wo', 1), ('lo wor', 1), ('o worl', 1), (' world', 1), ('hello w', 1), ('ello wo', 1), ('llo wor', 1), ('lo worl', 1), ('o world', 1), ('hello wo', 1), ('ello wor', 1), ('llo worl', 1), ('lo world', 1), ('hello wor', 1), ('ello worl', 1), ('llo world', 1), ('hello worl', 1), ('ello world', 1), ('hello world', 1)]“
'''



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【一个常规的算法,最长公共前缀,Python】 的相关文章

随机推荐

  • React18组件一键转换Vue3组件(持续更新中)

    您好 如果喜欢我的文章 可以关注我的公众号 量子前端 将不定期关注推送前端好文 需求来源 博主最近一段时间其实是在自研React组件库的业务的 目前也有了大约二十几个组件 这里顺便先留一下组件库的地址哈 React View UI组件库线上
  • TypeScript 中的类型断言

    在这里 我们将了解 TypeScript 如何使用一些称为类型断言的内部逻辑机制来推断和检查变量的类型 类型断言允许我们设置值的类型并告诉编译器不要推断它 在这种情况下 作为程序员 我们可能比 TypeScript 可以自行推断的更了解变量
  • npm 启动输出日志

    npm start d
  • 7天学习opengl入门

    10月13号下午3 00队长给我开了一个会 10 14号开始学习opengl 今天10月21号 期间 虽然有时候课程很满 但每天都至少写一个程序 当然 这些只是我7天来业余时间的学习 我觉得这个网址不错 大家如果也想学习opengl 并且具
  • 将UTC时间格式转换成东八区时间格式

    在前后端数据接口通信中 后台返回的时间往往是 UTC 格式的 即2022 12 15T10 28 57 000 00 00这种 作为前端 我们需要将其转换为标准的本地格式 并用 YYYY MM DD HH mm ss 这种格式呈现给用户 用
  • 哈工大2018秋高级语言程序设计课程大作业

    Github文件下载地址哈工大2018秋高级语言程序设计课程 高级语言程序设计 实验大作业反思报告 实验大作业题目 智能趣味电子通讯录 类型 信息管理系统 学生姓名 郭茁宁 班 号 1837101 学 号 1183710109 所在院系 计
  • 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(15)

    今天测试的时候又出现了一个问题 在查看科室库的出库列表时 网页上会报出500的错误 即参数错误 但是出库的所有信息都能正确的在上面显示 同样的问题在下订单后查看订单 以及配送后查看配送列表时出现了 而这个问题在代码几乎完全一样的中心库那里却
  • Android Studio 下真机调试

    文章目录 一 开启真机调试 二 断开真机调试 一 开启真机调试 准备USB调试线 一端插在电脑USB接口上 另一端插在手机充电口上 下面以自己的手机 huawei nova 5 为例 点击手机界面上的设置应用 然后往下找到 关于手机 点击进
  • ElasticSearch-IK分词器介绍和下载

    IK分词器 什么是IK分词器 分词 把一段中文或者别的划分成一个一个的关键字 我们在搜索的时候会把自己的信息进行分词 会把数据库中或者索引库中的数据进行分词 然后进行一个匹配操作 默认的中文分词是将每个字看成一个词 比如 我爱魏一鹤 会被分
  • 步进电机基础(2.4)- HB型步进电机的转子齿数与主极数之间的关系

    步进电机基础 2 4 HB型步进电机的转子齿数与主极数之间的关系 前言 基本信息 公式 前言说明 HB型步进电机的转子齿数与主极数之间的关系 1 HB步进电机的相数 转子齿数 主极数之间的表达式 2 相内磁路的一般表达式 3 相间磁路的一般
  • pdf太大了如何压缩?这四种方法快来尝试下吧

    pdf太大了如何压缩 我们都知道 大型PDF文件会占据较多的存储空间 特别是当需要处理和存储大量PDF文件时 而我们通过压缩PDF文件 能够在很大程度上缩减文件大小 进而便于文件的传输 备份和存储 另外 在某些情况下 存储和传输设备 如移动
  • 献给阿尔吉侬的花束( 入门级bfs查找 + 模版解读 + 错误示范)

    献给阿尔吉侬的花束问题 文章目录 献给阿尔吉侬的花束问题 前言 题目描述 题目分析 方法判定 bfs 算法模版介绍 两个数组 记录地图 记录移动距离 一个队列 依次遍历所有接触到的点 一次遍历 模版代码如下 题解代码 错误示范 总结 前言
  • 【Java8 新特性 3】Supplier简介

    在Java8中增加的接口Supplier 最适合用于表示工厂 带有Supplier的方法 通常应该限制输入工厂的类型参数使用有限制的通配符类型 以便客户端能够传入一个工厂 来创建指定类型的任意子类型 应该将这些资源或者工厂传给构造器 或者静
  • JavaFX 基础介绍

    目录 JavaFX 基础介绍 代码介绍 整体结构 场景面板介绍 FlowPane流失布局 BorderPane边框布局 控件介绍 Label 文本标签 TextField 输入框 PasswordField Button 按钮 按钮的点击事
  • Linux命令:traceroute命令(路由跟踪)

    traceroute是用来检测发出数据包的主机到 标主机之间所经过的网关数量的工具 traceroute的原理是试图以最小的TTL 存活时间 发出探测包来跟踪数据包到达目标主机所经过的网关 然后监听 个来自网关ICMP的应答 发送数据包的大
  • 简历造假,你以为我不知道?

    本文共 3495字 预估阅读时间 9分钟 前言 上到职场干将下到职场萌新 都会接触到包装简历这个词语 当你简历投到心仪的公司 公司内负责求职的工作人员是如何甄别简历的包装程度的 Coody老师根据自己的经验写下了这篇文章 谁都不是天才 包装
  • 负载均衡的三种实现方式

    不懂高性能的负载均衡设计 架构师带你飞 在软件系统的架构设计中 对集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案 负载均衡本质上是用于将用户流量进行均衡减压的 因此在互联网的大流量项目中 其重要性不言而喻 一 什么是负载均衡 早
  • 由一次mycat+mysql水平拆分集群问题引发的思考

    近段时间部署和测试了一个mycat 4 Percona tokudb的水平拆分集群 前段应用是将一类奖状数据不断地写入到这个库中 只有insert操作 前几天运行状态还比较好 从昨天开始 由于业务量突然增加了一些 磁盘IO负载变得很高 而且
  • 嵌入式系统设计学习笔记1

    一 计算机架构 1 计算机架构主要有两种 哈佛架构 冯诺依曼架构 冯诺依曼的核心是 存储程序 顺序执行 规定计算机必须具有如下功能 1 把需要的程序和数据送至计算机中 2 必须具有长期记忆程序 数据 中间结果及最终运算结果的能力 3 能够完
  • 【一个常规的算法,最长公共前缀,Python】

    TOC 给定一串字符串 要求提取其中重复率最高的字符串 不包含单字符串 思路分析 采取分段进行遍历的方式 达到出现所有情况为止 给定 abcabc 固出现情况为 ab 2 bc 2 abc 2 ca 1 bca 1 cab 1 abca 1