题目描述
给你一个字符串数组 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 }
提交结果