题目描述:删除 s 中的一些字符,使得它构成字符串列表 d 中的一个字符串,找出能构成的最长字符串。如果有多个相同长度的结果,返回第一个字符串。
Input:> s = “abpcplea”, d = [“ale”,“apple”,“monkey”,“plea”]
Output: > “apple”
package test;
public class demo1 {
public static void main(String[] args) {
String[] arr = {"ale","apuple","monkey","plea"};
String str = "abpcplea";
String longestWord = "";
for(String s:arr) {
if((s.length()>longestWord.length())&&isMatch(s,str)) {
longestWord = s;
}
}
System.out.println(longestWord);
}
private static boolean isMatch(String s, String str) {
int start = 0;
int start1 = 0;
int last = str.length()-1;
int last1 = s.length()-1;
while(start<last) {
if(start1>=last1) return true;
if(str.charAt(start++)==s.charAt(start1)) {
start1++;
}
if(str.charAt(last--)==s.charAt(last1)) {
last1--;
}
}
return false;
}
}