indexOf原理,Java,javascript,python实现

2024-04-10 12:38

本文主要是介绍indexOf原理,Java,javascript,python实现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Java实现
复制代码
public static void main(String[] args) {
String orgin = “边叫边练,我喜欢叫练”;
String serach = “叫练”;
int index = indexOf(orgin,serach);
System.out.println(index);
}

/**
* indexOf 算法原理
* @param orgin 原始字符串 B = “边叫边练,我喜欢叫练”;
* @param serachString 匹配字符串 A=“叫练”
* @return int 下标
*/
public static int indexOf(String orgin,String serachString) {
char[] chars = orgin.toCharArray();
char[] sChars = serachString.toCharArray();
//返回字符串下标
int index = -1;
//匹配字符串计数器,用于查询是否匹配到完整字符串
int s_index = 0;
//全局计数器,用于计算下标
int move = 0;
for (int i=0; i<chars.length; i++) {
move++;
//如果匹配到“叫”,继续向下开始匹配“练”
if (chars[i] == sChars[s_index]) {
s_index++;
if(s_index == sChars.length) {
index = move-sChars.length;
break;
}
} else {
s_index = 0;
}
}
return index;
}
复制代码

Javascript实现​
复制代码
1 /**
2 * @param orgin 原始字符串 B = “边叫边练,我喜欢叫练”;
3 * @param serachString 匹配字符串 A=“叫练”
4 **/
5 function indexOf(orgin,serachString) {
6 //返回字符串下标
7 var index = -1;
8 //匹配字符串计数器,用于查询是否匹配到完整字符串
9 var s_index = 0;
10 //全局计数器,用于计算下标
11 var move = 0;
12 for (var i=0; i<orgin.length; i++) {
13 move++;
14 //如果匹配到“叫”,继续向下开始匹配“练”
15 if (orgin.substr(i,1) == serachString.substr(s_index,1)) {
16 s_index++;
17 if(s_index == serachString.length) {
18 index = move-serachString.length;
19 break;
20 }
21 } else {
22 s_index = 0;
23 }
24 }
25 return index;
26 }
复制代码

python实现
复制代码
1 # indexOf 算法原理
2 # @param orgin 原始字符串 B = “边叫边练,我喜欢叫练”;
3 # @param serachString 匹配字符串 A=“叫练”
4 # @return int 下标
5 def index(orgin, serachString):
6 # 返回字符串下标
7 index = -1
8 # 匹配字符串计数器,用于查询是否匹配到完整字符串
9 s_index = 0
10 # 全局计数器,用于计算下标
11 move = 0
12 for letter in enumerate(orgin):
13 move = move + 1
14 # 如果匹配到“叫”,继续向下开始匹配“练”
15 if letter[1] == serachString[s_index]:
16 s_index = s_index + 1
17 if s_index == len(serachString):
18 index = move - len(serachString)
19 break
20 else:
21 s_index = 0;
22
23 return index
亚马逊测评 www.yisuping.com

这篇关于indexOf原理,Java,javascript,python实现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/891086

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

Python的Darts库实现时间序列预测

《Python的Darts库实现时间序列预测》Darts一个集统计、机器学习与深度学习模型于一体的Python时间序列预测库,本文主要介绍了Python的Darts库实现时间序列预测,感兴趣的可以了解... 目录目录一、什么是 Darts?二、安装与基本配置安装 Darts导入基础模块三、时间序列数据结构与

Python正则表达式匹配和替换的操作指南

《Python正则表达式匹配和替换的操作指南》正则表达式是处理文本的强大工具,Python通过re模块提供了完整的正则表达式功能,本文将通过代码示例详细介绍Python中的正则匹配和替换操作,需要的朋... 目录基础语法导入re模块基本元字符常用匹配方法1. re.match() - 从字符串开头匹配2.

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很