package helpers
import (
"crypto/md5"
"encoding/hex"
"math"
)
func JumpSearchString(arr []string, target string) int {
length := len(arr)
jumpSize := int(math.Sqrt(float64(length)))
left, right := 0, 0
targetHash := hash(target)
for right < length {
if hash(arr[right]) >= targetHash || right == length-1 {
break
}
left = right
right = int(math.Min(float64(length), float64(right+jumpSize))
}
for i := left; i <= right && i < length; i++ {
if hash(arr[i]) == targetHash {
return i
}
}
return -1
}
func hash(s string) string {
hash := md5.New()
hash.Write([]byte(s))
hashInBytes := hash.Sum(nil)
return hex.EncodeToString(hashInBytes)
}