문자열에서 처음 나타나는 인덱스 찾기

이 문제는 문장에서 찾고자 하는 단어가 있는지 확인하는 데 유용할 것이라고 생각했습니다.

func strStr(haystack string, needle string) int {
	j := 0
	if len(haystack) < len(needle) {
		return -1
	}
	for i := 0;  i <= len(haystack) - len(needle); i++ {
		if haystack(i) == needle(j) {
			for k := i; k < i+len(needle); k++ {
				if haystack(k) !
= needle(j) { j = 0 break } if j == len(needle)-1 { return i } j++ } } } return -1 }

원격 지점 문제를 설명하기 위해 문제는 “sadbutsad”라는 문자에 “sad”라는 단어가 나타나는 시기를 결정하는 알고리즘을 작성하는 것입니다.
주의할 점은 단어를 검색하려면 for 루프를 중첩해야 한다는 것입니다.
중첩 확인 없이 i를 계속 반복하면 오류가 발생합니다.

예를 들어, mississippi가 haystack이고 issip이 needle이면 issip은 중첩된 for 루프 없이는 확인할 수 없습니다.
하지만 위와 같이 중첩된 루프를 직접 만들 필요는 없습니다.
문자열이기 때문에 배열의 슬라이스 측면에서 직접 비교할 수 있습니다.

func strStr(haystack string, needle string) int {
	if len(haystack) < len(needle) {
		return -1
	}
	for i := 0; i <= len(haystack)-len(needle); i++ {
		if haystack(i:i+len(needle)) == needle {
			return i
		}
	}
	return -1
}

위의 내용을 작성하면 같은 방식으로 간결하게 비교할 수 있습니다.