DEV Community

Discussion on: Daily Challenge #253 - Sort Sentences Pseudo-alphabetically

Collapse
 
aminnairi profile image
Amin

Go

package sentence

import (
    "sort"
    "strings"
    "unicode"
)

func Sort(sentence string) string {
    words := strings.FieldsFunc(sentence, func (character rune) bool {
        return !unicode.IsLetter(character)
    })

    sort.Slice(words, func (first, second int) bool {
        firstWord := words[first]
        secondWord := words[second]

        if unicode.IsLower(rune(firstWord[0])) && unicode.IsLower(rune(secondWord[0])) {
            return firstWord < secondWord
        }

        return secondWord < firstWord
    })

    return strings.Join(words, " ")
}