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

news2024/12/24 8:50:04

连续字符段索引(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 = 0
        result = []
        # 遍历字符串(从第二个字符开始)
        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作为结束索引,因为序列的结束索引是索引值减1
        if 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,用于循环遍历字符串str1
    Dim 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 Variant
    resultIndex = 0
    ' 检查输入字符串str1的长度是否小于3
    ' 如果是,则直接返回一个空数组(即result的当前状态)
    If Len(str1) < 3 Then
        TwitchWords = result
        Exit Function
    End 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 + 1
            End If
            ' 更新currentChar和startIndex为当前字符和索引
            currentChar = mid(str1, i, 1)
            startIndex = i
        End If
    Next i
    ' 检查最后一个字符序列是否也满足条件(至少包含三个连续相同字符)
    If Len(str1) - startIndex + 1 >= 3 Then
        ' 如果是,则扩大result数组并添加最后一个序列的起始和终止索引
        ReDim Preserve result(resultIndex)
        result(resultIndex) = Array(startIndex - 1, Len(str1) - 1)
        ' 更新resultIndex
        resultIndex = resultIndex + 1
    End 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"赋值给str1
    result = 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.coloradmin.cn/o/1564895.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

详解人工智能(概念、发展、机遇与挑战)

前言 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是一门新兴的技术科学&#xff0c;是指通过模拟、延伸和扩展人类智能的理论、方法、技术和应用系统&#xff0c;以实现对人类认知、决策、规划、学习、交流、创造等智能行为的模拟、延伸和扩展…

Golang并发模型-Pipeline模型、Fan-in Fan-out模型

这段时间由于项目的需要&#xff0c;本人正在研究关于如何优雅的进行go的并发&#xff0c;以下是结合资料和视频的结果&#xff0c;文末会给出参考资料 Go语言的并发模型主要通过goroutine和channel实现&#xff0c;通过这个我们可以更有效地使用IO和CPU 这里我们围绕生成一个…

vtk实现多条曲线多条航迹轨迹用不同颜色区分不同曲线

vtk实现多条曲线多条航迹轨迹用不同颜色区分不同曲线 说明(废话)实现 说明(废话) 通过vtk9.2绘制多条三维曲线&#xff0c;让每条曲线不同颜色。 实现 以上只是测试效果 定义了一个Qvector m_colors&#xff0c;并在构造函数中赋值。 在箭头处调用&#xff0c;也就是上图最…

使用docker部署MongoDB数据库

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

clickhouse sql使用2

1、多条件选择 multiIf(cond_1, then_1, cond_2, then_2, …, else) select multiIf(true,0,1) 当第一条件不成立看第二条件判断 第一个参数条件参数&#xff0c;第二参数条件成立时走 2、clickhouse 在计算时候长出现NaN和Infinity异常处理 isNaN()和isInfinite()处理

数据结构栈和堆列

目录 栈&#xff1a; 栈的概念&#xff1a; 栈的实现&#xff1a; 栈接口的实现&#xff1a; 1.初始化栈&#xff1a; 2.入栈&#xff1a; 3.出栈&#xff1a; 4. 获取栈顶元素&#xff1a; 5.获取栈中有效数据的个数&#xff1a; 6.检测栈是否为空&#xff0c;如果为…

rocketmq管理工具rocketmq-console安装

rocketmq-console是一个图形化管理控制台&#xff0c;提供Broker集群状态查看&#xff0c;Topic管理&#xff0c;Producer、Consumer状态展示&#xff0c;消息查询等常用功能&#xff0c;这个功能在安装好RocketMQ后需要额外单独安装、运行。 中文文档地址&#xff1a;https:/…

基于模糊PID控制器的的无刷直流电机速度控制simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1无刷直流电机模型与速度控制 4.2 模糊PID控制器设计 5.完整工程文件 1.课题概述 基于模糊PID控制器的的无刷直流电机速度控制simulink建模与仿真。基于模糊PID控制器的无刷直流电机&#xff08;Brus…

量化交易入门(四十)什么是ASI指标,怎么用它炒股

一、什么是ASI指标 ASI指标全称为Accumulation Swing Index,即积累摆动指数。它是一种用于衡量市场供需关系强度的技术指标,由Welles Wilder开发。ASI指标结合了价格和成交量的变化,试图从动量的角度来衡量多空双方的力量对比。其计算公式如下: 计算价格的变化值:ΔP 今日收盘…

【Python系列】数据遍历

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

dddddd

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

使用Java流API构建树形结构数据

简介&#xff1a; 在实际开发中&#xff0c;构建树状层次结构是常见需求&#xff0c;如组织架构、目录结构或菜单系统。本教案通过解析给定的Java代码&#xff0c;展示如何使用Java 8 Stream API将扁平化的菜单数据转换为具有层级关系的树形结构。 1. 核心类定义 - Menu Data…

时间管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)大学生

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

JAVAEE—Callable接口,ReentrantLock,synchronized的工作过程

文章目录 Callable接口的用法Callable与FutureTask类 加锁的工作过程什么是偏向锁呢&#xff1f;举个例子 轻量级锁重量级锁 ReentrantLockReentrantLock 的用法: Callable接口的用法 Callable 是一个 interface . 相当于把线程封装了一个 “返回值”. 方便程序猿借助多线程的…

YoloV8改进策略:Neck改进|GCNet(独家原创)|附结构图

摘要 本文使用GCNet注意力改进YoloV8,在YoloV8的Neck中加入GCNet实现涨点。改进方法简单易用&#xff0c;欢迎大家使用&#xff01; 论文:《GCNet: Non-local Networks Meet Squeeze-Excitation Networks and Beyond》 非局部网络&#xff08;NLNet&#xff09;通过为每个查…

【教程】Kotlin语言学习笔记(六)——泛型

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 第二章 《数据类型》 第三章 《数据容器》 第四章 《方法》 第五章 《L…

如何远程电脑连接?

远程电脑连接是指通过网络将计算机与远程设备连接起来&#xff0c;实现远程管理和操作的技术。在现代信息化社会中&#xff0c;远程电脑连接成为了人们工作和生活中的重要方面。远程电脑连接可以极大地提高工作效率和便利性&#xff0c;让我们能够在不同地点的计算机之间进行协…

【Servlet】服务器内部转发以及客户端重定向

文章目录 一、服务器内部转发&#xff1a;request.getRequestDispatcher("...").forward(request, response);二、客户端重定向&#xff1a;response.sendRedirect("");三、服务器内部转发代码示例四、客户端重定向代码示例 一、服务器内部转发&#xff1a…

【Vue】vue3简介与环境配置

文章目录 项目编码规范什么是 Vue&#xff1f;安装node环境nvm针对node版本惊醒管理的工具 项目编码规范 组合式API Typescript setup(语法糖) 什么是 Vue&#xff1f; Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;…

史上最强 PyTorch 2.2 GPU 版最新安装教程

一 深度学习主机 1.1 配置 先附上电脑配置图&#xff0c;如下&#xff1a; 利用公司的办公电脑对配置进行升级改造完成。除了显卡和电源&#xff0c;其他硬件都是公司电脑原装。 1.2 显卡 有钱直接上 RTX4090&#xff0c;也不能复用公司的电脑&#xff0c;其他配置跟不上。…