题目描述:
给定一个字符串和一个字符串字典,找到字典里面最长的字符串,该字符串可以通过删除给定字符串的某些字符来得到。如果答案不止一个,返回长度最长且字典顺序最小的字符串。如果答案不存在,则返回空字符串。
解题思路:
- 先取出最长的字符串,并且字典顺序最小的字符串
对于列表中的字符串,一个一个的判断其和目标串之间是否满足该关系:目标串删除部分字符可以得到该串
class Solution { public String findLongestWord(String s, List<String> d) { String longestWord = ""; for(String target:d){ int l1 = longestWord.length(); int l2 = target.length(); if(l1>l2||(l1==l2&&longestWord.compareTo(target)<0)) continue; if(isValid(s,target)) longestWord = target; } return longestWord; } public boolean isValid(String s,String target){ int i = 0; int j = 0; while(i<s.length()&&j<target.length()){ if(s.charAt(i)!=target.charAt(j)) i++; else{ i++; j++; } } return j==target.length(); } }