500.keyboard-row.go 604 B

123456789101112131415161718192021222324252627282930313233
  1. var rows map[rune]int = map[rune]int{
  2. 'A': 1, 'S': 1, 'D': 1, 'F': 1, 'G': 1, 'H': 1, 'J': 1, 'K': 1, 'L': 1,
  3. 'Z': 2, 'X': 2, 'C': 2, 'V': 2, 'B': 2, 'N': 2, 'M': 2,
  4. }
  5. func findWords(words []string) (res []string) {
  6. for i := range words {
  7. if isInOneRow(words[i]) {
  8. res = append(res, words[i])
  9. }
  10. }
  11. return
  12. }
  13. func isInOneRow(s string) bool {
  14. res := 0
  15. for _, r := range s {
  16. ch := toUpper(r)
  17. if val, ok := rows[ch]; ok {
  18. res |= val
  19. } else {
  20. res |= 4
  21. }
  22. }
  23. return res == 1 || res == 2 || res == 4
  24. }
  25. func toUpper(r rune) rune {
  26. if 'a' <= r {
  27. return rune(r - 32)
  28. }
  29. return r
  30. }