class Test {
public static void main
(String[] args
) { "abdb",
"xvwzxz",
"xvwzzzxyxx",
"abczde",
"efghabcd"
};
System.
out.
println(test
+ " => " + wordInSeq
(test
)); }
}
int[][] dp = new int[s.length()][2];
int max_index = -1;
for(int i=0;i<s.length();++i){
dp[i][0] = 1;
dp[i][1] = i;
for(int j=i-1;j>=0;--j){
if(s.charAt(i) > s.charAt(j)){
if(dp[i][0] < 1 + dp[j][0]){
dp[i][0] = 1 + dp[j][0];
dp[i][1] = j;
}
}
}
if(max_index == -1 || dp[max_index][0] < dp[i][0]) max_index = i;
}
StringBuilder res = new StringBuilder("");
int temp = max_index;
while(dp[temp][1] != temp){
res.append(s.charAt(temp));
temp = dp[temp][1];
}
res.append(s.charAt(temp));
return res.reverse().toString();
}
}
Y2xhc3MgVGVzdCB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgU3RyaW5nW10gdGVzdHMgPSB7CiAgICAgICAgICAgICJhYmRiIiwKICAgICAgICAgICAgInh2d3p4eiIsCiAgICAgICAgICAgICJ4dnd6enp4eXh4IiwKICAgICAgICAgICAgImFiY3pkZSIsCiAgICAgICAgICAgICJlZmdoYWJjZCIKICAgICAgICB9OwogICAgICAgIAogICAgICAgIGZvcihTdHJpbmcgdGVzdCA6IHRlc3RzKXsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRlc3QgKyAiICA9PiAiICsgd29yZEluU2VxKHRlc3QpKTsKICAgICAgICB9CiAgICB9CgogICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHdvcmRJblNlcShTdHJpbmcgcykgewogICAgICAgIGludFtdW10gZHAgPSBuZXcgaW50W3MubGVuZ3RoKCldWzJdOwogICAgICAgIGludCBtYXhfaW5kZXggPSAtMTsKICAgICAgICBmb3IoaW50IGk9MDtpPHMubGVuZ3RoKCk7KytpKXsKICAgICAgICAgICAgZHBbaV1bMF0gPSAxOwogICAgICAgICAgICBkcFtpXVsxXSA9IGk7CiAgICAgICAgICAgIGZvcihpbnQgaj1pLTE7aj49MDstLWopewogICAgICAgICAgICAgICAgaWYocy5jaGFyQXQoaSkgPiBzLmNoYXJBdChqKSl7CiAgICAgICAgICAgICAgICAgICAgaWYoZHBbaV1bMF0gPCAxICsgZHBbal1bMF0pewogICAgICAgICAgICAgICAgICAgICAgICBkcFtpXVswXSA9IDEgKyBkcFtqXVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgZHBbaV1bMV0gPSBqOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYobWF4X2luZGV4ID09IC0xIHx8IGRwW21heF9pbmRleF1bMF0gPCBkcFtpXVswXSkgbWF4X2luZGV4ID0gaTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgU3RyaW5nQnVpbGRlciByZXMgPSBuZXcgU3RyaW5nQnVpbGRlcigiIik7CiAgICAgICAgaW50IHRlbXAgPSBtYXhfaW5kZXg7CiAgICAgICAgd2hpbGUoZHBbdGVtcF1bMV0gIT0gdGVtcCl7CiAgICAgICAgICAgIHJlcy5hcHBlbmQocy5jaGFyQXQodGVtcCkpOwogICAgICAgICAgICB0ZW1wID0gZHBbdGVtcF1bMV07CiAgICAgICAgfQogICAgICAgIHJlcy5hcHBlbmQocy5jaGFyQXQodGVtcCkpOwogICAgICAgIHJldHVybiByZXMucmV2ZXJzZSgpLnRvU3RyaW5nKCk7CiAgICB9Cn0=