【LeetCode】键盘行 Java 题解
题目描述
给你一个字符串数组 words ,只返回可以使用在 美式键盘 同一行的字母打印出来的单词。键盘如下图所示。
美式键盘 中:
第一行由字符 "qwertyuiop" 组成。第二行由字符 "asdfghjkl" 组成。第三行由字符 "zxcvbnm" 组成。
复制代码
思路分析
今天的算法每日一题是字符串数组处理题目,题意简单明了。
整体思路是为每一个英文字母标记其对应键盘上的行号,然后检测字符串中所有字符对应的行号是否相同。
在实现代码中,首先预处理计算出每个字符对应的行号。这里可以采用 ASCII 码的知识,ASCII 码是最通用的信息交换标准。简单理解就是将字符转换成数字记录。方便后续使用,快速判断字符属于哪一行。
在代码执行的细节中,由于同一字母的大写字母,小写字母都对应的是同一个键盘位置,我们可以简化操作,统一转换成小写字母进行判断。具体实现如下:
通过代码
复制代码
总结
上述算法的时间复杂度是 O(n * n), 空间复杂度是 O(n)
今天的每日一题题目简单明了,但是实际实现,并且通过测试,大家可以实际尝试一下。纸上得来终觉浅,绝知此事要躬行!多多写代码,才有助于我们更好的提高!
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/301622efdb59806cbcef8d373】。文章转载请联系作者。
评论