leetcode——implement strstr()问题两种解决方法的运行速度为何差距这么大

baidu_38293861 2019-03-29 05:14:47
题目:
引用
Implement strStr().

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

Example 1:

Input: haystack = "hello", needle = "ll"
Output: 2
Example 2:

Input: haystack = "aaaaa", needle = "bba"
Output: -1
Clarification:

What should we return when needle is an empty string? This is a great question to ask during an interview.

For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C's strstr() and Java's indexOf().


方法一:这个用substring获得字串,在用equals比较

class Solution {
    public int strStr(String haystack, String needle) {
        int i=0,j;
        if(needle.length()==0){
            return 0;
        }
        int t = haystack.length()-needle.length();
        while(i <= t){
                if(needle.equals(haystack.substring(i,i+needle.length())))
                   return i;
                i++;
            }
        return -1;
    }
}


Runtime: 0 ms
Memory Usage: 37.6 MB



方法二:这个是直接用charAt一个一个获取字符来一个个比较

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



Runtime: 2 ms
Memory Usage: 38.8 MB


查看源码发现equals方法也是要遍历每个字串字符的,复杂度应该是和用charAt的一样的,是因为charAt源码在每次取字符时还判断了一下索引是否超出合理范围才使运行时间差出那么多吗,希望大佬能够解答
...全文
30 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧