leetcde练习——Implement strStr()

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

我的思路:

暴力方法,简单直接。

从字符串haystack的第一个字符开始,从左至右依次匹配它的子串(同needle比较)。如果遇到不匹配的就从头再来,从上次比较的起始位置的下一个位置开始匹配。

时间复杂度分析:

假设haystack.lenth()==m, needle.length()==n,那么时间复杂度=O(mn).

需要考虑到的一些情况:

1.needle、haystack为空

2、needle 长度要比haystack要长时

3、被匹配过的字符还可以作为下一次匹配的开头,如Mississippi 和 issip

4.如果needle的长度要比haystack中剩下的要匹配的子串长度都长,那么匹配一定会失败,返回-1,

  所以当needle.length>haystack.length()-curPosition时返回-1;

算法Java实现:

public int strStr(String haystack,String needle){
  for(int i=0; ;i++){
    for(int j=0; ;j++){
        if(j==needle.length()) return i;
        if(i+j==haystack.length()) return -1;
        if(needle.charAt(j)!=haystack.charAt(i+j)) break;
}
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值