题目描述
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
解题代码
func findWords(words []string) []string {
var sum []string
// 确定三个字符串
s1 := "qwertyuiop"
s2 := "asdfghjkl"
s3 := "zxcvbnm"
for _, word := range words {
// 给一个旗子来确定是否可以插入数组中
flag := true
lower := strings.ToLower(word)
// 根据第一个字符确定应该遍历哪个字符串
where := isExistWhere(lower[0], s1, s2, s3)
for _, c1 := range lower {
// 判断字符是否在字符串中
if !isExistChar(c1,where) {
flag = false
break
}
}
if flag {
sum = append(sum,word)
}
}
return sum
}
// 判断字符是否存在内个字符串中
func isExistWhere(c uint8,s1,s2,s3 string) string {
for _, i := range s1 {
if c == uint8(i) {
return s1
}
}
for _, i := range s2 {
if c == uint8(i) {
return s2
}
}
for _, i := range s3 {
if c == uint8(i) {
return s3
}
}
return ""
}
// 判断字符在字符串中是否存在
func isExistChar(c int32,s string) bool {
for _, i := range s {
if c == i {
return true
}
}
return false
}