【算法】LeetCode算法题-Implement strStr

【算法】LeetCode算法题-Implement strStr

这是悦乐书的第151次更新,第153篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第10题(顺位题号是28)。给定两个任意字符串haystack、needle,返回haystack中第一次出现needle的索引,如果needle不是haystack的一部分,则返回-1。如果needle为空串,则返回0。例如:

输入:haystack =“hello”,needle =“ll”
输出:2
输入:haystack =“aaaaa”,needle =“bba”
输出:-1
输入:haystack =“”,needle =“”
输出:0

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

haystack依次从0开始截取长度和needle一致的字符串,再与needle比较是否一致,能够匹配上则返回循环到的下标索引,否则返回-1。

public int strStr(String haystack, String needle) {
    if ((haystack.isEmpty() && needle.length()>0) || needle.length() > haystack.length()) {
        return -1;
    }
    if (needle.isEmpty()  || (haystack.isEmpty()&&needle.isEmpty())) {
        return 0;
    }
    int j = needle.length();
    for(int i=0; j<=haystack.length(); i++,j++){
        if(needle.equals(haystack.substring(i, j))){
            return i;
        }
    }
    return -1;
}

03 第二种解法

直接使用字符串本身的indexOf()方法。

public int strStr2(String haystack, String needle) {
    int findResult = haystack.indexOf(needle);
    return findResult;
}

04 小结

此题比较简单,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!