给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。
如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在,则返回空字符串。
示例 1:
输入:s = "abpcplea", dictionary = ["ale","apple","monkey","plea"]
输出:"apple"
方法一:双指针
continue 语句是跳过循环体中剩余的语句而强制执行下一次循环,其作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定。
continue 语句类似于 break 语句,但它只能出现在循环体中。它与 break 语句的区别在于:continue 并不是中断循环语句,而是中止当前迭代的循环,进入下一次的迭代。简单来讲,continue 是忽略循环语句的当次循环。
public String findLongestWord(String s, List<String> dictionary) { String res=""; for(String target:dictionary){ if(res.length()>target.length()||(res.length()==target.length()&&res.compareTo(target)<0)){ continue; } if(subString(s,target)){ res=target; } } return res; } //判断是否为子字符串 private boolean subString(String str,String subStr){ int i=0; int j=0; while(i<str.length()&&j<subStr.length()){ if(str.charAt(i)==subStr.charAt(j)){ i++; j++; }else { i++; } } return j == subStr.length(); }