How to find the smallest letter in a sorted slice that is larger than a given letter in Go

1 Answer

0 votes
package main

import (
    "fmt"
)

// Function to find the smallest letter greater than the given letter
func findSmallestLetterGreaterThanTarget(letters []rune, givenLetter rune) rune {
    left := 0
    right := len(letters) - 1
    result := letters[0] // Default to the first letter

    for left <= right {
        mid := left + (right - left) / 2

        if letters[mid] > givenLetter {
            result = letters[mid]
            right = mid - 1 // Narrow down to the left half
        } else {
            left = mid + 1 // Narrow down to the right half
        }
    }

    return result
}

func main() {
    letters := []rune{'c', 'e', 'k', 'm'}
    givenLetter := 'd'

    result := findSmallestLetterGreaterThanTarget(letters, givenLetter)

    fmt.Printf("The smallest letter greater than '%c' is: %c\n", givenLetter, result)
}


/*
run:

The smallest letter greater than 'd' is: e

*/

 



answered Sep 22 by avibootz
...