博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
字符串查找---查找子字符串在原字符串第一次出现时的起始索引
阅读量:6237 次
发布时间:2019-06-22

本文共 1354 字,大约阅读时间需要 4 分钟。

一,问题描述:

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

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

你可能感兴趣的文章
森林、树与二叉树相互转换
查看>>
Spark随谈(一)—— 总体架构
查看>>
算法系列15天速成——第十四天 图【上】
查看>>
django 快速实现登录
查看>>
导入数据时遇见ORA-00054
查看>>
模拟终端打印效果特效
查看>>
forfiles命令批量删除N天前文件
查看>>
顺序队列
查看>>
(NO.00005)iOS实现炸弹人游戏(三):从主场景类谈起
查看>>
git/github初级运用自如
查看>>
《Netty 权威指南》—— NIO类库简介
查看>>
Codeforces 452 A. Eevee
查看>>
小鱼儿CTO赵兴国:基于阿里云的互联网+视频会议系统实践
查看>>
基于smack的即时聊天系统之文件传输功能实现
查看>>
Boa服务器的移植
查看>>
Linux网络编程入门
查看>>
help
查看>>
我的友情链接
查看>>
GIT服务器配置及同步站点目录
查看>>
我的友情链接
查看>>