题目
给你一个字符串 s 和一个字符串数组 dictionary 作为字典,找出并返回字典中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。
如果答案不止一个,返回长度最长且字典序最小的字符串。如果答案不存在,则返回空字符串。
示例 1:
输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]
输出:"apple"
示例 2:
输入:s = "abpcplea", dictionary = ["a","b","c"]
输出:"a"
提示:
- 1 <= s.length <= 1000
- 1 <= dictionary.length <= 1000
- 1 <= dictionary[i].length <= 1000
- s 和 dictionary[i] 仅由小写英文字母组成
题解
方法一:最大堆
使用最大堆来维护符合条件的字符串顺序。这里主要是要熟悉最大堆的使用,尤其是最大堆如何
class Solution {
public String findLongestWord(String s, List<String> dictionary) {
Set<String> set = new HashSet<>();
PriorityQueue<String> pq = new PriorityQueue<>(new Comparator<String>(){
public int compare(String a, String b){