【LeetCode】最短补全词 Java 题解
题目描述
给你一个字符串 licensePlate 和一个字符串数组 words ,请你找出并返回 words 中的 最短补全词 。
补全词 是一个包含 licensePlate 中所有的字母的单词。在所有补全词中,最短的那个就是 最短补全词 。
在匹配 licensePlate 中的字母时:
忽略 licensePlate 中的 数字和空格 。不区分大小写。如果某个字母在 licensePlate 中出现不止一次,那么该字母在补全词中的出现次数应当一致或者更多。例如:licensePlate = "aBc 12c",那么它的补全词应当包含字母 'a'、'b' (忽略大写)和两个 'c' 。可能的 补全词 有 "abccdef"、"caaacab" 以及 "cbca" 。
请你找出并返回 words 中的 最短补全词 。题目数据保证一定存在一个最短补全词。当有多个单词都符合最短补全词的匹配条件时取 words 中 最靠前的 那个。
思路分析
今天算法题目是字符串处理题目。题目要求求出最短补全词。也就是 words 中包含全部 licensePlate 字符长度最短的第一个单词。
判断字符问题,需要熟悉 JAVA 中 Character 类,其中 isLetter() 方法用来判断是否是一个字母。toLowerCase()方法转换字母的小写形式。
题目要求忽略大小写,因此,我们统一转换将字符成小写,方便处理。
然后逐个判断每一个单词的包含情况,并记录最小长度。字符长度最短的第一个单词即为答案。具体实现代码如下:
通过代码
总结
今天的算法每日一题主要考察细心和对编程语言 API 的熟悉程度,熟悉 API 可以大大提升我们的解题效率。
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/6503f30b0b53f3a2fcc252e0e】。文章转载请联系作者。
评论