[leetcode] 522. 最长特殊序列 II 暴力 + 双指针

网友投稿 656 2022-11-23

[leetcode] 522. 最长特殊序列 II 暴力 + 双指针

[leetcode] 522. 最长特殊序列 II 暴力 + 双指针

题目链接:​​传送门​​

暴力 + 双指针 题意有点绕,大体意思是: 给定一个字符串序列,问最长的不是其他字符串的子序列的串的长度是多大,如果没有则返回-1

比如题目中给定的​​"aba","cdc","eae"​​​三个字符串,每个字符串都可以是最长的不是其他字符串的子序列 aba不是cdc的子序列,并且也不是eae的子序列 cdc不是aba的子序列,并且也不是eae的子序列 eae不是aba的子序列,并且也不是cdc的子序列 所以说:结果为3(aba、cdc、eae的长度均为3)

而对于​​"aaa","aaa","aa"​​ 来讲第一个字符串aaa的子序列aa是第二个字符串aaa和第三个字符串aa的子序列,所以说不满足条件,其余的均不满足,所以说结果为-1

思路: 首先,暴力枚举每个字符串s[i]为子序列的情况,并且判断该字符串是否为其他字符串的子序列,如果满足条件,便记录max{s[i]}

java_code:

public class Solution { public static int findLUSlength(String[] strs) { int ans = -1; int len = strs.length; for (int i = 0; i < len; i++) { boolean flag = true; for (int j = 0; j < len; j++) { if (i == j) continue; if (isSubStr(strs[i], strs[j])) { flag = false; break; } } if (flag) ans = Math.max(ans, strs[i].length()); } return ans; } public static boolean isSubStr(String a, String b) { int lena = a.length(); int lenb = b.length(); int pa = 0, pb = 0; while (pa < lena && pb < lenb) { if (a.charAt(pa) == b.charAt(pb)) pa++; pb++; } if (pa != lena) return false; else return true; } public static void main(String[] args) { }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:原创 HTML5+CSS3 学习笔记 09
下一篇:SpringBoot事件发布和监听详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~