每日一题---500. 键盘行[力扣][Go]

题目描述

给你一个字符串数组 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
}

提交结果

在这里插入图片描述

おすすめ

転載: blog.csdn.net/weixin_52025712/article/details/121059906