• 【算法】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 小结

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

  • 相关阅读:
    ELK安装(ubuntu)
    Ubuntu18.04上安装java
    .net core跨平台的文件路径
    缺少vim
    docker进入容器
    docker删除名字为none的imgae
    Ubuntu18.04上安装Docker-Compose
    Java类的反射
    Java常用类(二) Scanner类和大数类
    Java常用类(一)Math类和Random类
  • 原文地址:https://www.cnblogs.com/xiaochuan94/p/9847665.html
Copyright © 2020-2023  润新知