LeetCode--Implement strStr()

来源:互联网 发布:膜法传奇知乎 编辑:程序博客网 时间:2024/06/05 13:32

题目:



我的方案:

public class Solution {    public int strStr(String haystack, String needle) {        int hslen=haystack.length();        int nllen=needle.length();        int rlen=-1;        for(int i=0;i<hslen;i++){            int len=0;            for(int j=0;j<nllen;j++){               int templen=i+j;               if(templen>=hslen)break;               if(needle.charAt(j)!=haystack.charAt(templen)){                   break;               }else{                   len++;               }            }            if(len==nllen) {rlen=i;break;}        }        return rlen;    }}

遗憾的是超时了,Time Limit Exceeded。

根据网上改进的简洁方案:

public class Solution {    public int strStr(String haystack, String needle) {       int hlen=haystack.length();       int nlen=needle.length();       if(nlen>hlen)return -1;       int i,j;       for(i=j=0;i<hlen&&j<nlen;){           if(haystack.charAt(i)==needle.charAt(j)){               i++;               j++;           }else{               i=i-j+1;               j=0;           }       }       return nlen!=j?-1:i-j;    }}

可以通过,但是效率不是很理想。

还有更简洁的:

public class Solution {    public int strStr(String haystack, String needle) {        return  haystack.indexOf(needle);      }}
经典的KMP解决方案请参考:KMP解决方案

0 0