首页 > 编程语言 > 详细

leetcode.双指针.524通过删除字母匹配到字典里最长单词-Java

时间:2019-11-28 11:12:58      阅读:68      评论:0      收藏:0      [点我收藏+]

1. 具体题目

给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。

示例 1:  输入: s = "abpcplea", d = ["ale","apple","monkey","plea"]  输出:  "apple"

2. 思路分析

遍历字符串数组,将其中每个长度大于当前结果值 ans  or 长度相同但字典顺序小于 ans 的字符串 str 与 s 比较,若 str 是 s 的子串则更新结果值。而比较过程中可能会出现:s 已经遍历完,而当前 str 还未遍历完,此类情况不应更新结果值。

3.代码

 1 public String findLongestWord(String s, List<String> d) {
 2         String ans = "";
 3         for(String str : d){
 4             if(str.length() < ans.length() || str.length() == ans.length() && ans.compareTo(str) < 0)  continue;
 5             int i = 0, j = 0;
 6             while(i < s.length() && j < str.length()){
 7                 if(s.charAt(i) == str.charAt(j)){
 8                     j++;
 9                 }
10                 i++;
11             }
12             if(j == str.length()) 
13                 ans = str;    
14         }
15         return ans;
16     }

 

 

leetcode.双指针.524通过删除字母匹配到字典里最长单词-Java

原文:https://www.cnblogs.com/XRH2019/p/11946853.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!