您的位置:首页 > 职场人生

在字符串中找到子字符串第一次出现的位置---笔试面试题

2012-11-09 21:31 323 查看
1、首先说明一下题目:给定两个字符串str1和str2,找到str2在str1第一次出现的位置。例如str1=“lizhongyi” str2=“zhong” str2在str1第一次出现的位置是2(从0开始)。

2、先抛开一切语言,单纯从算法的角度考虑,这道题该怎么做呢?(这种独立思考的过程很重要,要不断的训练自己)

思路一:在str1中找str2中第一个字符出现的位置,然后再一个字符一个字符的比较str1和str2,如果到str2结束都相等,则找到str2在str1中第一次出现的位置。否则再在str1中找str2的第一字符出现的位置。。。。这种思路很好理解,也很好想到,可是如果用代码实现不太容易或者有些复杂。

思路二:从str1中截取和str2长度一样的字符串,和str2比较,相等即找到,不相等再截取一个新的字符串。直到找到或找不到。(这种思路很好,而且从计算机的角度考虑也很好实现)

3、Java实现代码:

package com.sailang.string;

public class StringTest
{
public static void main(String[] args)
{
String str1 = "lizhongyizhongyi";
String str2 = "zhong";

System.out.println(findFirstPositionOfSubString(str1, str2));
}
/**
* 找到字符串str2在字符串str1中第一次出现的位置,找不到返回-1
* @param str1
* @param str2
* @return
*/
public static int findFirstPositionOfSubString(String str1, String str2)
{
int offset = 0;
String substr = null;

if((str1 == null) || (str2 == null) || (str1.length() < str2.length()))
{
return -1;
}
else
{
while(offset <= (str1.length() - str2.length()))
{
substr = String.copyValueOf(str1.toCharArray(), offset, str2.length());
if(substr.equals(str2))
{
return offset;
}
offset ++;
}
return -1;
}
}
}
4、统计str2在str1中出现的次数,很简单,将上面的程序稍加改造一下就可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐