法律服务网站建设,wordpress 禁用评论,最近国际军事军情要闻,wordpress数据库表管理524. 通过删除字母匹配到字典里最长单词
给你一个字符串 s 和一个字符串数组 dictionary 作为字典#xff0c;找出并返回字典中最长的字符串#xff0c;该字符串可以通过删除 s 中的某些字符得到。
如果答案不止一个#xff0c;返回长度最长且字典序最小的字符串。如果答案…524. 通过删除字母匹配到字典里最长单词
给你一个字符串 s 和一个字符串数组 dictionary 作为字典找出并返回字典中最长的字符串该字符串可以通过删除 s 中的某些字符得到。
如果答案不止一个返回长度最长且字典序最小的字符串。如果答案不存在则返回空字符串。
示例 1输入s abpcplea, dictionary [ale,apple,monkey,plea]
输出apple
示例 2输入s abpcplea, dictionary [a,b,c]
输出a提示
1 s.length 10001 dictionary.length 10001 dictionary[i].length 1000s 和 dictionary[i] 仅由小写英文字母组成
解题思路
使用双指针可以很直接判断字典里面的字符串是否属于s的一个子序列。遍历字典中所有的字符串找出长度最长且字典序最小属于s的子序列的字符串
代码
class Solution {public String findLongestWord(String s, ListString dictionary) {int res0;String ret;for(String k:dictionary){if(k.length()s.length()||!longest(s,k)) continue;if(k.length()res||ret.length()0||k.length()resret.compareTo(k)0){resk.length();retk;}}return ret;}public boolean longest(String a,String b){int l0,r0;while(la.length()rb.length()){if(a.charAt(l)b.charAt(r))r;l;}return rb.length();}
}