每日一道java筆試題 2020-9-23

水巷石子發表於2020-09-23

每日一道java筆試題 2020-9-23

LeetCode:28. 實現 strStr()

實現 strStr()函式。

給定一個 haystack 字串和一個 needle 字串,在 haystack 字串中找出 needle 字串出現的第一個位置 (從0開始)。如果不存在,則返回 -1

示例 1:

輸入: haystack = "hello", needle = "ll"
輸出: 2

示例 2:

輸入: haystack = "aaaaa", needle = "bba"
輸出: -1

說明:

needle 是空字串時,我們應當返回什麼值呢?這是一個在面試中很好的問題。

對於本題而言,當 needle 是空字串時我們應當返回 0 。這與C語言的 strstr() 以及 Java的 indexOf() 定義相符。

雙指標法:

package cn.lbl.face.leetCode;

public class 實現strStr {
    public static int strStr(String haystack, String needle) {
        //如果needle是空字串時,返回0
        if (needle == null || needle.length()==0) {
            return 0;
        }
        int i=0;
        while (i<needle.length()) {
            int index = haystack.indexOf(needle, i);
            if (index == -1) {
                return index;
            }
            i = index;
            for (int j = 0; j < needle.length(); j++, index++) {
                if (haystack.charAt(index) != needle.charAt(j)) {
                    break;
                }
            }
            return i;
        }
        return -1;
    }

    public static void main(String[] args) {
        System.out.println(strStr("aaaaa","bba"));
    }
}

在這裡插入圖片描述

相關文章