Python字符串处理算法 (一)

【华为OD机试真题 python】字符串变换最小字符串 负整数,负号开头,数字部分由一个或者多个0-9组成,如-2,-012,-23,-00023。思路:1,取数字及±符号 2,split(‘+’) split(‘-’) 3,结果累加。合法的整数包括正整数,一个或者多个0-9组成,如:0,2,3,002,102。最后才知道是算法格式的问题,这么写只调用一次函数,即只能验证一个测试用例;输入字符串s输出s中包含所有整数的最小和。字符串s只包含az,AZ,+,-,最后没有地方验证:记录下自己的失误。机考用例通过5%,郁闷至极~~ 阅读详情

CIC内部的核心软件系统都是搭建在linux上的,为了方便程序间的协同操作,我们还编写了很多shell script,尽管类似grep, sort, cut之类的工具用起来很爽很强大,但是shell 脚本并不适于描述稍微复杂些的逻辑跟算法,譬如我曾经写过这样的代码,猜猜它是做什么的

text=abcde
echo $text|sed -r 's/(.)//1 /g'|cut -d" " -f1,2,3|sed 's/ //g'

其实呢,就是取字符串 'abcde' 的前三位,输出结果是 'abc'

如果程序里充满类似的代码,不难想象其可读性和可维护性都不会好到哪里去,因此我们正在尝试其他的脚本作为补充,Python就是一个理想的选择。为什么 没选其他语言呢,答案很简单:据说Google也用Python... 他们的选择总归不会太糟,我们也就懒得花时间挑了。

用Python来实现上面同样的功能,很简单, text="abcde";text[0:3]

作为我个人学习的一部分,我打算用Python实现《算法导论II》 中的一些经典算法,并且记录下来,和大家分享

我首先选择了第32章,即字符串匹配作为这系列文章的开始,毕竟我们内部的程序涉及大量的文本分析操作,用Python 来重新实现其中一些,也是温故知新,会更有效果。

在实现的过程中我发现,Python 语法和书中伪码很相像,加上命令的执行可以立竿见影,实在是非常适合用于教学的语言。只是需要注意的是书中伪码的字符串起始下标为1,结束下标是闭区间, 而Python中字符串起始下标为0(当作一个list进行slice), 操作时的结束下标为开区间。因此书中伪码翻译为Python时所有字符串起始下标都需要减1,而结束下标不变。

先用Python的语法简单描述一下何谓字符串匹配算法,一些对变量的大小约束这里不再赘述。

假设有长度为 m 的模式字符串 P, 长度为 n 的文本 T,如果 P 出现在 T 的偏移 s 处,则有 P[0:m] = T[s-1: s+m]

说到这里,我们可以先在Python的交互环境中实验一下:

输入
p="cde"
t="abcde"
p[0:3] == t[2:5] == "cde"

输出
True

从而证明 p 出现在 t 的偏移 2处

那么什么是字符串匹配算法呢,这类算法就是要在文本 T 中找到所有出现模式字符串 P 的偏移位置。

接下来同样用Python的语法来描述一些术语

有两个字符串变量 x 和 y

x
和 y 相结合(concatenation):  x+y
x
是 y 的前缀(prefix):         x.startswith(y)
x
是 y 的后缀(suffix):         x.endswith(y)
x
的包含k个字符的前缀:         x[0:k-1]

Python:实现字符串Z 函数或 Z 算法(附完整源码) 阅读详情

相关推荐

Python:实现字符串manacher马拉车算法(附完整源码)

Python:实现字符串manacher马拉车算法(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 587

python replace()方法

主要参考Python replace()方法 描述 Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 语法 replace()方法语法: str.replace(old, new[, max]) 参数 old – 将被替换的子字符串。 new – 新字符串,用于替换old子字符串。 max –...

方小汪的博客 1007

S7-200SMART系列全套接线说明

SMART200接线方法,输入,输出,模拟量,面板,扩展糟等,并且详细说明接线原理。

文都龙哥 1万+

python字符串不能相减

想要实现字符串相减,可通过replace()方法。字符串可以直接进行相加,但是不能直接相减。

m0_65761520的博客 882

Context Capture10.20 安装教程(附安装包)

ContextCapture 是一款由Bentley公司推出的实景建模软件,可以快速为各种类型的基础设施项目生成最具挑战性的反应现实环境的三维模型。

一起来交流学习吧 2万+

Python海康摄像头SDK二次开发

摘要:为解决海康威视摄像头RTSP拉流延迟严重的问题,本文提出改用海康私有SDK直接取流的方案。通过下载海康设备网络SDK并调用其Python接口,实现了低延迟的视频流获取。文中详细介绍了SDK配置流程,并提供了优化版的Python代码示例,重点解决回调函数处理、队列缓冲和CPU占用等问题。测试结果表明,该方案显著降低了延迟,同时保持了较高的帧率(30FPS以上)和较低的CPU占用率(约2%)。相较于传统OpenCV+FFmpeg的RTSP方案,海康SDK直接取流在实时性方面具有明显优势。

xiaohouzi112233的博客 2608

Python字符串及运算

Python字符串及运算

YuanXiaoHei88的博客 4414

软考高级,信息系统项目管理师(高项)经验分享

软考高级,信息系统项目管理师(高项)经验分享 2020-12-21信息系统项目管理师(俗称高项)成绩出来了54,55,47,终于成为高级工程师了。 本文以编写整体管理论文的格式进行,将分为项目启动、项目计划、项目执行、项目检查、项目收尾5个过程回顾高项的考试历程,希望对其他同学有借鉴意义。个人觉得可能对于一次考不过的人参考价值比较大。 第一阶段、项目启动阶段Start——决定考哪个科目。 如图,高级资格的类型有:信息系统项目管理师、系统分析师、系统架构设计师、......

zcheva的专栏 5万+

Python字符串算法

字符串算法是计算机科学中的一种算法,用于处理文本字符串数据。字符串算法可以用于搜索、匹配、排序、压缩、加密等各种操作。Python提供了许多字符串算法,下面我将简单介绍一些常用的字符串算法及其Python实现。

weixin_51705589的博客 876

静态编译Qt5源码(Kylin-Desktop-V10-SP1-2203-LoongArch64+qt5.15.16)

之前的文档,记录的是通用情况,本次笔者记录下Qt5的静态编译过程,供有需要的小伙伴参考使用的操作系统是Kylin-Desktop-V10-SP1-General-Release-2203-LoongArch64,处理器是龙芯3A5000,架构是loongarch。

aggs1990的专栏 1401

SAP 交货成本(运费)

交货成本: 业务场景: 有些产品或供应商,会产生交货成本(运费、关税等) 业务模拟(以运费为例): 1、运费在采购订单体现:计划运费 ME21N创建采购订单,并且包含运费: MIGO收货时: 由上可知,MIGO时运费最终体现在库存(存货)科目中(V),或者价格差异中(S计价时)。 MIRO发票校验: 运费最终体现在单独科目中: 后台配置: 运费在发票时候...

willieyuan的博客 1万+

python -- str 字符串相减

从一个字符串中减去另一个字符串,得到一个新的字符串结果。

weixin_45939263的博客 1425

uniapp:安卓苹果APP判断是否授权开启手机位置服务+弹框引导跳转到用户手机设置位置服务开启页面,uniApp app判断是否授权位置信息权限如果位置是关闭状态则提示用户(跳转各机型位置设置页面)

uniapp APP判断是否开启位置信息服务&&判断是否授权位置信息权限,uniappapp定位权限被拒绝后,询问是否开启授权并跳转到手机设置页面,uniapp APP端 定位未授权 去手机设置里开启定位,uniapp提示用户开启定位,跳转到开启定位页面,uniapp获取当前位置及检测授权状态,uniapp中获取位置信息处理,uni-app实现定位功能_uniapp获取定位位置信息,uniapp中app是否开启定位,app获取地理位置,uniapp打开位置权限设置页面IOS,用户并没有开启微信信息服务或者没

✅ 精选推荐文章 4342

python编程—输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例 如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.” - 输入描述: 每个测试输入包含2个字符串 - 输出描述: 输出删除后的字符串 - 示例1: 输入 They are students. aeiou 输出 Thy r st...

weixin_43314056的博客 2万+

YOLOv11涨点改进 | 全网独家下采样改进、细节涨点篇 | TGRS 2025 | 引入PWD参数化小波下采样模块,减少下采样过程中小目标的关键细节丢失,即插即用,助力高效涨点发论文

本文提出了一种改进YOLOv11小目标检测性能的参数化小波下采样(PWD)模块。PWD通过小波变换保留目标细节信息,增强频率域特征表达,有效解决了传统下采样导致的小目标信息丢失问题。该模块采用双分支设计,结合自适应频率选择和空间补偿机制,在红外图像和低光场景中表现出更强的抗干扰能力。实验表明,PWD能显著提升YOLOv11对弱纹理和低对比度目标的检测精度,同时保持计算效率。文章详细介绍了PWD的结构原理、实现代码及在YOLOv11中的集成方法,为小目标检测提供了有效的改进方案。

Ai缝合怪、助力小伙伴高效发论文 232

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LeetCode#66加一 Python解

一开始我想的是直接操作,判断、加一或者进位加一,但我写着写着发现这样要处理好几种特殊情况太,譬如3999、99 有点麻烦。 于是我换了种思路:把列表转成字符串再转成整型,加一之后再转成整型列表: class Solution: def plusOne(self, digits: List[int]) -> List[int]: s = ''.join(map(str,digits)) intd = int(s) + 1 return [int(.

明明的博客 261

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Python程序员面试算法宝典---解题总结: 第5章 字符串 5.10 如何求字符串里的最长回文子串

# -*- coding: utf-8 -*- ''' Python程序员面试算法宝典---解题总结: 第5章 字符串 5.10 如何求字符串里的最长回文子串 题目: 回文字符串是指一个字符串从左到右与从右到左遍历得到的序列是相同的。 例如"abcba"就是回文字符串,而"abcab"则不是回文字符串。 分析: 举例: 'cdefedfghi'的最长回文串是'defed' 'abcdefe...

qingyuanluofeng的专栏 305

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python编程练习-按照指定规则对输入的字符串进行处理

牛客网机试题练习:按照指定规则对输入的字符串进行处理

qq_28170363的博客 391

LeetCode-Python-791. 自定义字符串排序

字符串S和T只包含小写字符。在S中,所有字符只会出现一次。 S已经根据某种规则进行了排序。我们要根据S中的字符顺序对T进行排序。更具体地说,如果S中x在y之前出现,那么返回的字符串中x也应出现在y之前。 返回任意一种符合条件的字符串T。 示例: 输入: S = "cba" T = "abcd" 输出: "cbad" 解释: S中出现了字符 "a", "b", "c", 所以 &q

Keep Coding 1226

自然语言处理系列二十六》文本相似度算法》字符串编辑距离》算法原理

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录自然语言处理系列二十六文本相似度算法字符串编辑距离算法原理总结 自然语言处理系列二十六 文本相似度算法 在自然语言处理中,我们经常需要判定两个东西是否相似。比如,在微博的热点话题推荐那里,需要比较微博之间的相似度,让相似度高的微博聚集在一起形成一个簇,提出一个主题。在问答系统中,比如说人工客服,我们需要提前准备好问题和一些答案,让用户输入的问题与题

weixin_52610848的博客 506

python将首字符移到末尾_Python—将每个字符移动到字符串末尾,而不重用原始字符串...

因此,对于字符串“hello”,结果将是:helloehlloelhloellhoelloh # here it use this string from the last result, instead of the original onelelohlleoh...hello # last result在上面的示例中,原始字符串出现了两次,尽管我说过“不重用原始字符串”,但请记住,它只是为了更...

weixin_32141253的博客 1161

Python写算法实现大数相加

python手动实现大数相加。

PythonLover521的博客 835

LeetCode 345. 反转字符串中的元音字母 Python

编写一个函数,以字符串作为输入,反转该字符串中的元音字母。示例 1:给定 s = "hello", 返回 "holle".示例 2:给定 s = "leetcode", 返回 "leotcede".注意:元音字母不包括 "y".class Solution: def reverseVowels(self, s): vowels = ['a','e','i','o','u',...

ma412410029的博客 275

Leetcode Plus One Python | 以字符串格式处理int数字加一进位的问题 str和int之间的连续转换

Leetcode 66题 Plus One Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The digits are stored such that the most significant digit is at the head of the l...

润泽的博客 342

Python [LeetCode] 加一

给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123。 示例2 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321。 思路1 全部...

qq_34771726的博客 339

[python刷题]牛客网9——字符串旋转(字符串的处理)

题目描述 对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。 给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。 测试样例: "ABCDEFGH",8,4 返回:"FGHABCDE" # -*- coding:utf-8 -*- class StringRotation: def rotateSt...

TOMACAT的博客 3万+
上一篇: Google的免费午餐
下一篇: Lucene的原理和应用
CICTech
博客等级 码龄19年 26粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值