Menu
CoddyTech

Find the First Occurrence in a String

Bạn nhận được hai chuỗi (string), haystack và needle. Trả về chỉ số trong haystack nơi lần xuất hiện đầu tiên của needle bắt đầu, tính từ 0. Nếu needle không bao giờ xuất hiện trong haystack, hãy trả về -1. Tự viết cách tìm kiếm thay vì gọi hàm tìm chuỗi con có sẵn như find hoặc indexOf.

Hàm

strStr(haystack: string, needle: string) → integer
haystackstring
văn bản cần tìm kiếm
needlestring
chuỗi cần tìm
Trả vềinteger
chỉ số mà bản sao đầu tiên của needle bắt đầu, hoặc -1 nếu không có

Ràng buộc

  • 1 ≤ haystack.length ≤ 5 × 104
  • 1 ≤ needle.length ≤ 5 × 104
  • Cả hai chuỗi chỉ chứa các chữ cái tiếng Anh viết thường.
  • needle có thể dài hơn haystack. Khi đó, nó không thể xuất hiện, và đáp án là -1.

Ví dụ

Đầu vào
haystack = "bananarama"needle = "ana"
Đầu ra
1
Giải thích
Các ký tự ở chỉ số từ 1 đến 3 ghép thành ana. Một bản sao khác bắt đầu ở chỉ số 3 và chồng lấp lên bản sao đó, nhưng chỉ tính bản sao đầu tiên, nên đáp án là 1.
challenge icon

Câu hỏi mở rộng

Bạn có thể trả về mọi chỉ số nơi needle bắt đầu, kể cả các lần xuất hiện chồng lấn, mà vẫn chạy trong thời gian O(n + m) không?

Đặt lại code
def strStr(haystack, needle):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

haystack = "bananarama"
needle = "ana"

Đầu ra mong đợi

1