实现 strStr() 函数。
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
示例 1:
输入: haystack = "hello", needle = "ll" 输出: 2
示例 2:
输入: haystack = "aaaaa", needle = "bba" 输出: -1
说明:
当 needle
是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
对于本题而言,当 needle
是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
这个题最骚的地方就在于,看了别人的解法,居然就直接调用官方api String类的indexof()方法,真的是骚
谁叫我老实呢,自己动手码
public class strStr {
public static void main(String[] args) {
String haystack="mississippi";
String needle="pi";
int flag=strStr(haystack,needle);
System.out.println(flag);
}
public static int strStr(String haystack,String needle){
//一些最基本情况的判断
if(needle.equals("")){
return 0;
}
char[] hs=haystack.toCharArray();
char[] nd=needle.toCharArray();
if(haystack.equals(needle)){
return 0;
}
//受到以前上课时候讲冒泡算法优化的启发,哈哈这个循环只进行到两字符串长度之差的位置即可
for(int i=0;i<=hs.length-nd.length;i++){
//当前字符与目标字符串首字符字符相等则进入判断部分
if(nd[0]==hs[i]){
int index=i;
//依次比较后面的字符,如果不相等则跳出该循环
for(int j=0;j