字符串查找---查找子字符串在原字符串第一次出现时的起始索引

简介:

一,问题描述:

给定两个不同长度的字符串,查找短字符串在长字符串中第一次出现时的索引。

比如:s = "I come from china, You come from India" ,  t = "from"

此时"from"在 s 中第一次出现的索引为 7

 

二,算法分析:

依次扫描字符串 s 中的每个字符,开始一轮判断:若 s 中字符和 t 中字符相同,则获取 s 的下一个字符和 t 的下一个字符...

直至到t的末尾或者在某个点处 s 中字符与 t 中字符不相等了。

前者表明 t 字符串在 s 字符串中;后者表明,从s的当前字符开始,t 不在 s 中,

那么此时 s 就扫描下一个字符,再开始下一轮判断

 

三,代码如下:

复制代码
 1 public class StringIndex {
 2     
 3     public static void main(String[] args) {
 4         String s = "I come from china, You come from India";
 5         String t = "from";
 6         int r_begin = strIndex(s.toCharArray(), t.toCharArray());
 7         System.out.println(r_begin);
 8  9 
10     //查找t 在 s中第一次出现时,t在 s中的起始索引
11     public static int strIndex(char[] s, char[] t){
12         int k_begin = -1;//标记 t 在 s中的起始位置
13         for(int index = 0; index < s.length; index++)// 对 s 中的每个字符由 while开启一轮比较
14         {
15             int i = index;//字符串s 从 index 处开始和 字符串 t 比较
16             int j = 0;
17             while((i < s.length && j < t.length) && (s[i++] == t[j++]))
18                 ;
19             if(j == t.length)//字符串 t 出现在了 字符串 s 中
20             {
21                 k_begin = index;//记录下字符串 t 出现在 s中的起始位置,程序返回该位置
22                 break;
23             }
24         }
25         return k_begin;
26     }
27
复制代码

 

另外可参考JDK类库:String类的indexOf(String )方法

本文转自hapjin博客园博客,原文链接:http://www.cnblogs.com/hapjin/p/5382961.html,如需转载请自行联系原作者

相关文章
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
260460 0
|
11月前
|
数据采集 前端开发 物联网
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
本文介绍了一个基于多模态大模型的医疗图像诊断项目。项目旨在通过训练一个医疗领域的多模态大模型,提高医生处理医学图像的效率,辅助诊断和治疗。作者以家中老人的脑部CT为例,展示了如何利用MedTrinity-25M数据集训练模型,经过数据准备、环境搭建、模型训练及微调、最终验证等步骤,成功使模型能够识别CT图像并给出具体的诊断意见,与专业医生的诊断结果高度吻合。
20759 162
【项目实战】通过LLaMaFactory+Qwen2-VL-2B微调一个多模态医疗大模型
|
11月前
|
人工智能 JSON API
使用 Qwen 生成数据模型和进行结构化输出
本教程展示如何使用CAMEL框架和Qwen模型生成结构化数据。CAMEL是一个强大的多智能体框架,支持复杂的AI任务;Qwen由阿里云开发,具备自然语言处理等先进能力。教程涵盖安装、API密钥设置、定义Pydantic模型,并演示了通过Qwen生成JSON格式的学生信息。最后,介绍了如何利用Qwen生成多个随机学生信息的JSON格式数据。欢迎在[CAMEL GitHub](https://github.com/camel-ai/camel)上为项目点星支持。
3499 70
|
11月前
|
自然语言处理 物联网 API
使用CAMEL和Unsloth进行数据生成与Qwen模型微调
本项目结合CAMEL和Unsloth,生成高质量训练数据并对Qwen 7B模型进行微调,提升其在特定内容上的理解和生成能力。我们使用CAMEL生成指令-输入-输出三元组数据,并通过Unsloth的LoRA技术加速微调过程。详细步骤包括环境准备、API密钥设置、模型加载与配置、数据生成与保存、模型训练及推理。最终,微调后的Qwen 7B模型能更好地处理CAMEL社区相关文本。 更多详情请参考: - [CAMEL GitHub](https://github.com/camel-ai/camel)
|
存储 JSON 开发框架
给开源大模型带来Function Calling、 Respond With Class
OpenAI 在他的多个版本的模型里提供了一个非常有用的功能叫 Function Calling,就是你传递一些方法的信息给到大模型,大模型根据用户的提问选择合适的方法,然后输出给你,你再来执行。
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
303 4
ArcGIS:如何进行离散点数据插值分析(IDW)、栅格数据的重分类、栅格计算器的简单使用、缓冲区分析、掩膜?
ArcGIS:如何进行离散点数据插值分析(IDW)、栅格数据的重分类、栅格计算器的简单使用、缓冲区分析、掩膜?
969 0
|
人工智能 并行计算 API
极智AI | 谈谈GPU并行推理的几个方式
大家好,我是极智视界,本文主要聊一下 GPU 并行推理的几个方式。
729 0
|
JavaScript 安全
Cannot read property ‘querySelectorAll‘ of undefined问题解决
Cannot read property ‘querySelectorAll‘ of undefined问题解决
374 2
|
开发工具 图形学 git
寻路库recastnavigation改造
寻路库recastnavigation改造
487 0