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

本文介绍了一种简单的字符串匹配算法,用于查找短字符串在长字符串中首次出现的位置。通过逐字符对比,实现快速定位,并提供了一个Java实现示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,问题描述:

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

比如: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,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值