目录链接:
力扣编程题-解法汇总_分享+记录-CSDN博客 GitHub同步刷题项目:
https://github.com/September26/java-algorithms https://github.com/September26/java-algorithms
原题链接:力扣
描述: 给出一个字符串数组 words 组成的一本英语词典。返回 words 中最长的一个单词,该单词是由 words 词典中其他单词逐步添加一个字母组成。
若其中有多个可行的答案,则返回答案中字典序最小的单词。若无答案,则返回空字符串。
示例 1:
输入:words = ["w","wo","wor","worl", "world"]
输出:"world"
解释: 单词"world"可由"w", "wo", "wor", 和 "worl"逐步添加一个字母组成。
示例 2:
输入:words = ["a", "banana", "app", "appl", "ap", "apply", "apple"]
输出:"apple"
解释:"apply" 和 "apple" 都能由词典中的单词组成。但是 "apple" 的字典序小于 "apply"
【LeetCode编程题解法汇总|力扣解法汇总720-词典中最长的单词】提示:
1 <= words.length <= 1000
1 <= words[i].length <= 30
所有输入的字符串 words[i] 都只包含小写字母。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-word-in-dictionary
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
* 解题思路: * 首先按照字符串长度排序,长的字符串一定由短的组成的。 * 每遍历一个字符串如果符合就加入到set当中。判断条件为则新加入的字符串取substring(0, length - 1),如果set中存在就加入,不存在则说明不符合。 * 最终对list种的字符串计算字序,返回结果
代码:
public class Solution720 {public String longestWord(String[] words) {
Arrays.sort(words, Comparator.comparingInt(String::length));
Set set = new HashSet<>();
List list = new ArrayList<>();
int maxLength = 0;
for (int i = 0;
i < words.length;
i++) {
String word = words[i];
int length = word.length();
if (length == 1) {
set.add(word);
maxLength = 1;
list.add(word);
continue;
}
if (!set.contains(word.substring(0, length - 1))) {
continue;
}
set.add(word);
if (length > maxLength) {
list.clear();
list.add(word);
maxLength = length;
} else if (length == maxLength) {
list.add(word);
}
}
if (list.size() == 0) {
return "";
}
String result = list.get(0);
for (int k = 1;
k < list.size();
k++) {
String str = list.get(k);
char[] chars = str.toCharArray();
char[] chars1 = result.toCharArray();
for (int i = 0;
i < chars.length;
i++) {
if (chars[i] == chars1[i]) {
continue;
}
result = chars[i] < chars1[i] ? str : result;
break;
}
}
return result;
}
}
推荐阅读
- 蓝桥杯|蓝桥杯——1.5递归实现组合型枚举
- 中间件|Zookeeper详解(从安装—入门—使用)
- 蓝桥杯|蓝桥杯-新枚举方法应用
- 东数西算加快云网与数据融合 天翼云架起云间高速
- java|java基础-(一)-JDK的下载和安装
- Java|【Java】Swing程序设计 将helloworld显示到窗体中
- java|湖南工程师用中文编写操作系统,还发明了甲、乙、丙语言(??)
- Kafka|Kafka选型 操作系统、磁盘、磁盘容量、宽带
- java|重磅(向996开炮!携程带头居家办公。)