翻译题目:
/** * 官方,题目的意思其实就是求当前字符串没有被其他任意字符串包含的字符串 * 简单来说,比如字符串 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();
}
}
该博客讨论了一个编程问题,即找出给定字符串数组中没有被其他任意字符串包含的最长字符串。通过遍历和比较每个字符串是否为其他字符串的子序列,找到符合条件的最长字符串。解决方案包括检查字符串是否为子序列的函数和主算法实现。
972

被折叠的 条评论
为什么被折叠?



