package hw03_frequency_analysis //nolint:golint,stylecheck
import (
	"regexp"
	"strings"
)

func Top10(str string) []string {
	template := regexp.MustCompile(`[A-Za-zА-Яа-я\-]+`)
	tmpArr := template.FindAllString(str, -1)
	tmpMap := calculate(tmpArr)
	var result []string
	for i := 0; i < 10; i++ {
		count := 0
		word := ""
		for tmpWord, tmpCount := range tmpMap {
			if tmpCount > count {
				count = tmpCount
				word = tmpWord
			}
		}
		if word != "" {
			result = append(result, word)
		}
		delete(tmpMap, word)
	}
	return result
}

func calculate(arr []string) map[string]int {
	result := make(map[string]int)
	for _, v := range arr {
		if v != "" && v != "-" {
			_, ok := result[strings.ToLower(v)]
			if ok {
				result[strings.ToLower(v)]++
			} else {
				result[strings.ToLower(v)] = 1
			}
		}
	}
	return result
}