翻译题目:
/** * 官方,题目的意思其实就是求当前字符串没有被其他任意字符串包含的字符串 * 简单来说,比如字符串 asd 就被asd123包含了,所以asd的长度就没有意思,只需要求asd123的长度就行 * 再比如 123, 12345, 123456,4567 * 123被字符串12345包含,所以123不符合,12345被123456包含,所以也不符合,所以符合的职业4567和123456 * 分别比较他们的最大长度,最大长度的字符串就是我们要找的字符串 * @param strs * @return */
/**
* @author xnl
* @Description:
* @date: 2022/6/27 22:11
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
String[] strs = {"aba","cdcaba","eaeaavba"};
// String[] strs = {"aaa","aaa","aa"};
System.out.println(solution.findLUSlength(strs));
}
/**
* 官方,题目的意思其实就是求当前字符串没有被其他任意字符串包含的字符串
* 简单来说,比如字符串 asd 就被asd123包含了,所以asd的长度就没有意思,只需要求asd123的长度就行
* 再比如 123, 12345, 123456,4567
* 123被字符串12345包含,所以123不符合,12345被123456包含,所以也不符合,所以符合的职业4567和123456
* 分别比较他们的最大长度,最大长度的字符串就是我们要找的字符串
* @param strs
* @return
*/
public int findLUSlength(String[] strs) {
int n = strs.length;
int ans = -1;
for (int i = 0; i < n; i++){
boolean check = true;
for (int j = 0; j < n; j++){
if (i != j && isSubseq(strs[i], strs[j])){
check = false;
break;
}
}
if (check){
ans = Math.max(ans, strs[i].length());
}
}
return ans;
}
private boolean isSubseq(String i, String j){
int ptS = 0, ptT = 0;
while (ptS < i.length() && ptT < j.length()){
if (i.charAt(ptS) == j.charAt(ptT)){
++ptS;
}
++ptT;
}
return ptS == i.length();
}
}