123456789101112131415161718192021222324252627282930313233 |
- var rows map[rune]int = map[rune]int{
- 'A': 1, 'S': 1, 'D': 1, 'F': 1, 'G': 1, 'H': 1, 'J': 1, 'K': 1, 'L': 1,
- 'Z': 2, 'X': 2, 'C': 2, 'V': 2, 'B': 2, 'N': 2, 'M': 2,
- }
- func findWords(words []string) (res []string) {
- for i := range words {
- if isInOneRow(words[i]) {
- res = append(res, words[i])
- }
- }
- return
- }
- func isInOneRow(s string) bool {
- res := 0
- for _, r := range s {
- ch := toUpper(r)
- if val, ok := rows[ch]; ok {
- res |= val
- } else {
- res |= 4
- }
- }
- return res == 1 || res == 2 || res == 4
- }
- func toUpper(r rune) rune {
- if 'a' <= r {
- return rune(r - 32)
- }
- return r
- }
|