Python-VBA编程500例-029(入门级)

连续字符段索引(Index of Consecutive Character Segments)在实际应用中具有多种场景。常见的应用场景有:

1、文本分析:在文本处理和分析中,连续字符段索引可以用于识别重复的字符序列或模式。这些模式可能对于理解文本的结构、风格或特定含义至关重要。例如,在诗歌或歌词中,连续字符段可能表示押韵或节奏。

2、密码学和安全:在密码分析和安全领域,连续字符段可能指示加密密钥的模式或弱点。通过分析文本中连续字符段的分布和频率,密码学家可以推断出加密算法的某些特性或寻找潜在的解密方法。

3、数据压缩:在数据压缩算法中,连续字符段可以用作压缩数据的依据。通过识别并编码连续字符段,可以减少数据的大小,从而提高存储和传输效率。

4、生物信息学:在生物信息学和基因组学研究中,连续字符段索引可以用于识别DNA或RNA序列中的重复模式。这些模式可能与基因功能、疾病关联或进化过程有关。

5、搜索引擎优化:在搜索引擎优化(SEO)中,连续字符段可以帮助识别网页内容中的关键词和短语。通过优化这些连续字符段的出现和分布,可以提高网页在搜索引擎结果中的排名。

6、文本编辑器和IDE:在文本编辑器和集成开发环境(IDE)中,连续字符段索引可以用于实现自动完成、代码高亮或错误检查等功能。通过分析代码中的连续字符段,这些工具可以提供更智能的编程体验。

7、自然语言处理:在自然语言处理(NLP)中,连续字符段可以用于识别文本中的重复单词或短语,这在词性标注、命名实体识别或情感分析等任务中可能有所帮助。

8、数据清洗和预处理:在数据清洗和预处理阶段,连续字符段可能被视为噪声或无效数据。通过检测和删除这些连续字符段,可以提高数据的质量和准确性,为后续的数据分析提供更好的基础。

总之,连续字符段索引文本处理、密码学、数据压缩、生物信息学、搜索引擎优化、文本编辑器和自然语言处理等多个领域都有广泛的应用。通过利用这些索引,我们可以更好地理解、分析和优化文本数据。

 

1、连续字符段索引:
1-1、Python:
# 1.问题描述:
# 给定一个字符串,若字符串中存在连续出现≥3次的字符,则以二维数组的形式输出所有这样字符索引的起始位和终止位形成的列表.
# 2.问题示例:
# 输入str1 = "mymyelsaaawwwonderfulllly",则输出[[7, 9], [10, 12], [20, 23]],
# 即a的起始位为7,终止位为9;W的起始位为10,终止位为12;l的起始位为20,终止位为23.
# 3.代码实现:
class Solution:'''定义了一个函数TwitchWords,它接受一个字符串作为参数,并返回一个二维数组,其中包含所有长度至少为3的连续相同字符子串索引的起始位和终止位.参数str1: 字符串返回值: 二维数组,即所有出现3次及以上字符子串的首末索引值列表,组成的二维数组.'''def twitchWords(self, str1):# 检查输入字符串长度,若>3则无需继续处理,直接返回空列表if len(str1) < 3:return []# 初始化当前字符、连续字符序列的起始索引和结果列表current_char = str1[0]start_index = 0result = []# 遍历字符串(从第二个字符开始)for i in range(1, len(str1)):# 如果发现字符变化if str1[i] != current_char:# 检查是否形成了长度≥3的连续字符序列if i - start_index >= 3:# 将该连续字符序列的起始和结束索引添加到结果列表中result.append([start_index, i - 1])# 更新当前字符和连续字符序列的起始索引current_char = str1[i]start_index = i# 检查字符串末尾是否还有未处理的连续字符序列# 注意:这里直接使用len(str1) - 1作为结束索引,因为序列的结束索引是索引值减1if len(str1) - start_index >= 3:result.append([start_index, len(str1) - 1])# 返回包含所有长度≥3的连续字符序列的起始和结束索引的结果列表return result
# 主函数
if __name__ == '__main__':# 输入字符串str1 = "mymyelsaaawwwonderfulllly"# 创建Solution对象solution = Solution()# 调用twitchWords方法并打印结果print("输入为:", str1)print("输出为:", solution.twitchWords(str1))
# 4.运行结果:
# 输入为: mymyelsaaawwwonderfulllly
# 输出为: [[7, 9], [10, 12], [20, 23]]
1-2、VBA:
Rem 自定义函数,功能:连续字符段索引
Function TwitchWords(ByVal str1 As String) As Variant' 声明变量i,用于循环遍历字符串str1Dim i As Long' 声明变量currentChar,用于存储当前正在检查的字符Dim currentChar As String' 声明变量startIndex,用于存储当前字符序列的起始索引Dim startIndex As Long' 声明动态数组result,用于存储所有符合条件的字符序列的起始和终止索引Dim result() As Variant' 声明变量resultIndex,用于追踪result数组中的当前位置Dim resultIndex As Long' 初始化结果数组,使其包含一个元素(尽管这个元素将不会被使用)' ReDim用于重新定义数组的大小' 这里result(0)表示数组有一个元素,但因为我们从resultIndex = 0开始,所以实际上是从result(1)开始存储数据ReDim result(0) As VariantresultIndex = 0' 检查输入字符串str1的长度是否小于3' 如果是,则直接返回一个空数组(即result的当前状态)If Len(str1) < 3 ThenTwitchWords = resultExit FunctionEnd If' 设置currentChar为str1的第一个字符currentChar = mid(str1, 1, 1)' 设置startIndex为1,因为VBA中字符串的索引是从1开始的startIndex = 1' 循环从str1的第二个字符开始,直到字符串的末尾For i = 2 To Len(str1)' 检查当前字符是否与currentChar不同If mid(str1, i, 1) <> currentChar Then' 如果不同,并且从startIndex到i-1的字符数至少为3' 则说明找到了一个符合条件的字符序列If i - startIndex >= 3 Then' 扩大result数组以容纳新元素' ReDim Preserve用于保留数组中的现有数据ReDim Preserve result(resultIndex)' 将新找到的字符序列的起始和终止索引(减1以符合VBA的索引规则)存储到result数组中' 注意:这里使用Array函数创建一个新的数组,并将其作为result数组的一个元素result(resultIndex) = Array(startIndex - 1, i - 2)' 更新resultIndex以指向下一个位置resultIndex = resultIndex + 1End If' 更新currentChar和startIndex为当前字符和索引currentChar = mid(str1, i, 1)startIndex = iEnd IfNext i' 检查最后一个字符序列是否也满足条件(至少包含三个连续相同字符)If Len(str1) - startIndex + 1 >= 3 Then' 如果是,则扩大result数组并添加最后一个序列的起始和终止索引ReDim Preserve result(resultIndex)result(resultIndex) = Array(startIndex - 1, Len(str1) - 1)' 更新resultIndexresultIndex = resultIndex + 1End If' 返回result数组,它现在包含了所有符合条件的字符序列的起始和终止索引TwitchWords = result
End Function
Rem 执行程序,功能:调用自定义函数TwitchWords,在立即窗口中输出结果.
Sub TestRun()Dim str1 As String  ' 声明一个字符串变量str1,用于存储测试字符串Dim result As Variant  ' 声明一个Variant类型的变量result,用于存储TwitchWords函数的返回值Dim i As Long  ' 声明一个长整型变量i,用于循环遍历result数组str1 = "mymyelsaaawwwonderfulllly"  ' 将测试字符串"mymyelsaaawwwonderfulllly"赋值给str1result = TwitchWords(str1)  ' 调用TwitchWords函数,并将str1作为参数传入,将返回值存储在result变量中Debug.Print "输入为:" & str1  ' 使用Debug.Print在VBA的调试窗口中输出输入字符串Debug.Print "输出为:"  ' 使用Debug.Print输出一个提示信息,表明接下来将输出处理结果' 使用For循环遍历result数组,LBound和UBound函数分别返回数组的最小和最大索引For i = LBound(result) To UBound(result)' 对于result数组中的每一个元素(也是一个数组),输出其第一个和第二个元素(即起始和结束索引)Debug.Print "(" & result(i)(0) & ", " & result(i)(1) & ")"Next i
End Sub
'结果输出:
'输入为: mymyelsaaawwwonderfulllly
'输出为:
'(7, 9)
'(10, 12)
'(20, 23)

注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。

2、相关文章:

2-1、Python-VBA编程500例-027(入门级) 

2-2、Python-VBA编程500例-028(入门级) 

Myelsa的Python算法之旅(高铁直达):Myelsa的Python算法之旅(高铁直达)-CSDN博客
欢迎访问个人主页:非风V非雨-CSDN博客
欢迎志同道合者一起交流学习,我的QQ:94509325/微信:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/295363.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用docker部署MongoDB数据库

最近由于工作需要搭建MongoDB数据库&#xff1a;将解析的车端采集的数据写入到数据库&#xff0c;由于MongoDB高可用、海量扩展、灵活数据的模型&#xff0c;因此选用MongoDB数据库&#xff1b;由于现公司只有服务器&#xff0c;因此考虑容器化部署MongoDB数据&#xff0c;特此…

制造业工厂怎么通过MES系统来升级改造车间管理

在当今高度竞争的市场环境下&#xff0c;制造业企业需要不断提高生产效率&#xff0c;以在激烈的竞争中立于不败之地。而一种被广泛应用的方法就是利用MES控制系统&#xff0c;通过数字化管理和自动化控制来改造生产车间提升生产效率。 1、MES管理系统能够实现对生产过程的全面…

HarmonyOS 和 OpenHarmony

HarmonyOS 和 OpenHarmony 支持的 shell 命令不同&#xff0c;因此有时候需要做一做区分&#xff0c;目前有些文档上没有标注&#xff0c;因此可能产生歧义。 HarmonyOS 支持 getprop&#xff1a; getprop hw_sc.build.os.apiversion # 查看API版本OpenHarmony 上支持 param…

158 Linux C++ 通讯架构实战13,epoll 原理和函数介绍,epoll_create,epoll_ctl ,epoll_wait

epoll技术简介 //&#xff08;2.1&#xff09;epoll概述 //(1)I/O多路复用&#xff1a;epoll就是一种典型的I/O多路复用技术:epoll技术的最大特点是支持高并发&#xff1b; //传统多路复用技术select,poll&#xff0c;在并发量达到1000-2000&#xff0c;性能就会明显下…

YOLOV5 改进:更换主干网络为Resnet

1、前言 之前实现了yolov5更换主干网络为MobileNet和vgg网络 本章将继续将yolov5代码进行更改,通过引用官方实现的resnet网络,替换原有的yolov5主干网络 替换的效果如下: 2、resnet 网络结构 测试的代码为官方的resnet34 通过summary 打印的resnet网络结构如下 =======…

【Linux】Vim编辑器

专栏文章索引&#xff1a;Linux 目录 在Vim编辑器中&#xff0c;一个Tab键相当于几个空格&#xff1f; 在Vim编辑器中&#xff0c;一个Tab键相当于几个空格&#xff1f; 在Vim编辑器中&#xff0c;默认情况下&#xff0c;一个Tab键相当于8个空格。 这是Vim的默认设置&#x…

全面剖析CSS盒子模型:概念理解、构成元素、布局影响与实战技巧

在CSS进行网页布局与样式设计的过程中&#xff0c;盒子模型&#xff08;Box Model&#xff09;扮演着无可替代的角色。这一关键概念是精准掌控页面元素布局与样式的基石。唯有深入理解和熟练运用盒子模型的原理及各项属性&#xff0c;开发者方能自如地塑造页面中各元素的最终形…

杰发科技——Jlink插件使用

0. 简介 杰发自带的烧录工具是ATCLink&#xff0c;基于DapLink适配。个人不太喜欢ATCLink&#xff0c;推荐使用Jlink&#xff0c;毕竟自己买&#xff0c;不用问原厂要&#xff0c;而且带Jlink&#xff0c;至少5Mhz以上。 V9烧录器使用7.50以下版本驱动。 V11烧录器可以使用7…

【数据挖掘】实验5:数据预处理(2)

验5&#xff1a;数据预处理&#xff08;2&#xff09; 一&#xff1a;实验目的与要求 1&#xff1a;熟悉和掌握数据预处理&#xff0c;学习数据清洗、数据集成、数据变换、数据规约、R语言中主要数据预处理函数。 二&#xff1a;实验知识点总结 1&#xff1a;数据集成是将多个…

DolphinScheduler on k8s 云原生部署实践

文章目录 前言利用Kubernetes技术云原生平台初始化迁移基于Argo CD添加GitOpsDolphinScheduler 在 k8s 上的服务自愈可观测性集成服务网格云原生工作流调度从HDFS升级到S3文件技术总结 前言 DolphinScheduler 的高效云原生部署模式&#xff0c;比原始部署模式节省了95%以上的人…

windows部署Jenkins并远程部署tomcat

目录 1、Jenkins官网下载Jenkins 2、安装Jenkins 3、修改Home directory 4、插件安装及系统配置 5、Tomcat安装及配置 5.1、修改配置文件,屏蔽以下代码 5.2、新增登录用户 5.3、编码格式修改 5.4、启动tomcat 6、Jenkins远程部署war包 6.1、General配置 6.2、Sourc…

网页设计图片素材-家具 里面有71张家具图片

网页设计图片素材-家具 里面有71张家具图片 链接: https://pan.baidu.com/s/1wHgpZrHXrkS-jeJxxnzIQg 提取码: t7b6

算法错题本

这里写目录标题 错题本注意数据的耦合性对于无解情况的处理思路一组数据以0为结束标记&#xff0c;如何输入到数组中&#xff0c;并计数多个数据进行比较链表删除重复元素的启发循环体里谨慎写类型定义并初始化&#xff08;一般写上就是错&#xff09;队列中读取队尾元素数组当…

信息技术学院大数据技术专业开展专业实训周

四川城市职业学院讯&#xff08;信息技术学院 陈天伟&#xff09;日前&#xff0c;为提升学生的工匠精神和职业认知&#xff0c;信息技术学院邀请企业专家入驻眉山校区大数据实训基地&#xff0c;开展数据标识专业实训周。 数据标识是大数据专业的核心技术&#xff0c;数据标识…

51单片机学习笔记13 红外遥控接收

51单片机学习笔记13 红外遥控接收 一、红外遥控1. **发射原理**2. **接收原理**3. **发射、接收示例** 二、编码、解码1. **编码方式分类**&#xff1a;&#xff08;1&#xff09;Pulse Distance Modulation (PDM) 脉冲距离调制&#xff1a;&#xff08;2&#xff09;Pulse Wid…

Windows下用CMake编译PugiXML及配置测试

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 PugiXML是什么&#xff1f; PugiXML 是一个用于解析和操作 XML 文档的 C 库。它提供了简单易用的接口&#xff0c;能够高效地加载…

3. WiFi基本原理

1. WiFi简介 WiFi的全称是Wireless Fidelity。它是一种无线网络通信技术&#xff0c;由Wi-Fi联盟拥有&#xff0c;目的是改善基于IEEE 802.11标准的无线网络产品之间的互通性&#xff0c;允许电子设备在没有物理连接的情况下进行高速数据传输。此外&#xff0c;WiFi也被视为IE…

Spring Boot接收从前端传过来的数据常用方式以及处理的技巧

一、params 传参 参数是会拼接到url后面的请求 场景规范:url后面的key值<=3个参数的时候,使用params 传参 支持的请求方式:get(正规的是get方式)、post 都行 例如: http://localhost:8080/simpleParam?name=Tom&age=10 在postman里面的体现为 后端接收的接口…

【热门话题】WebKit架构简介

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 WebKit架构简介一、引言二、WebKit概览1. 起源与发展2. 模块化设计 三、WebCore…

java Web 辅助学习管理系统idea开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 java Web 辅助学习管理系统是一套完善的信息管理系统&#xff0c;结合java 开发技术和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 前段主要技术 bootstr…