【算法千题案例】每日LeetCode打卡——81.最长特殊序列 Ⅰ

简介: 📢前言🌲原题样例:最长特殊序列 Ⅰ🌻C#方法:排序遍历🌻Java 方法:简单解法💬总结

📢前言

🚀 算法题 🚀

🌲 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程😜

🌲 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题

🌲 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧🧐!

🌲 今天是力扣算法题持续打卡第81天🎈!

🚀 算法题 🚀

🌲原题样例:最长特殊序列 Ⅰ

给你两个字符串,请你从这两个字符串中找出最长的特殊序列。


「最长特殊序列」定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。


子序列 可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。


输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。

示例1:

输入: "aba", "cdc"
输出: 3
解释: 最长特殊序列可为 "aba" (或 "cdc"),两者均为自身的子序列且不是对方的子序列。

示例2:

输入:a = "aaa", b = "bbb"
输出:3

示例3:

输入:a = "aaa", b = "aaa"
输出:-1

提示:

  • 两个字符串长度均处于区间 [1 - 100] 。
  • 字符串中的字符仅含有 ‘a’~‘z’ 。


🌻C#方法:排序遍历

  • 判断字符串是否相等,相等说明特殊子序列不存在
  • 不等的话最长特殊子序列就是两字符串中最长的那个

代码:

public class Solution {
    public int FindLUSlength(string a, string b) {
        if(a.Equals(b)) {
            return -1;
        }
        else {
            return Math.Max(a.Length, b.Length);
        }
    }
}

执行结果

通过
执行用时:64 ms,在所有 C# 提交中击败了100.00%的用户
内存消耗:34.4 MB,在所有 C# 提交中击败了25.90%的用户

🌻Java 方法:简单解法

思路解析

image.png

直接使用Math.max返回字符串最长长度就是最终结果了~

代码:

public class Solution {
    public int findLUSlength(String a, String b) {
        if (a.equals(b))
            return -1;
        return Math.max(a.length(), b.length());
    }
}

执行结果

通过
执行用时:1 ms,在所有 Java  提交中击败了94.76%的用户
内存消耗:36.8 MB,在所有 Java 提交中击败了26.40%的用户

复杂度分析

时间复杂度:O( min(x,y) )。其中 x 和 y 是字符串 a 和 b 的长度。方法 equals 的时间复杂度为 min(x,y)。
空间复杂度:O(1)

总结

  • 今天是力扣算法题打卡的第八十一天!
  • 文章采用 C#Java 两种编程语言进行解题
  • 一些方法也是参考力扣大神写的,也是边学习边分享,再次感谢算法大佬们
  • 那今天的算法题分享到此结束啦,明天再见!


相关文章
|
3月前
|
数据采集 机器学习/深度学习 算法
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
59 0
|
1月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
38 0
|
9天前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
23天前
|
存储 算法 搜索推荐
这些算法在实际应用中有哪些具体案例呢
【10月更文挑战第19天】这些算法在实际应用中有哪些具体案例呢
26 1
|
30天前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
23 2
|
1月前
|
算法
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
这篇文章介绍了动态规划算法中解决最大上升子序列问题(LIS)的方法,包括问题的描述、动态规划的步骤、状态表示、递推方程、计算最优值以及优化方法,如非动态规划的二分法。
65 0
动态规划算法学习四:最大上升子序列问题(LIS:Longest Increasing Subsequence)
|
1月前
|
算法 数据可视化 新制造
Threejs路径规划_基于A*算法案例完整版
这篇文章详细介绍了如何在Three.js中完整实现基于A*算法的路径规划案例,包括网格构建、路径寻找算法的实现以及路径可视化展示等方面的内容。
59 0
Threejs路径规划_基于A*算法案例完整版
|
2月前
|
算法 数据可视化
基于SSA奇异谱分析算法的时间序列趋势线提取matlab仿真
奇异谱分析(SSA)是一种基于奇异值分解(SVD)和轨迹矩阵的非线性、非参数时间序列分析方法,适用于提取趋势、周期性和噪声成分。本项目使用MATLAB 2022a版本实现从强干扰序列中提取趋势线,并通过可视化展示了原时间序列与提取的趋势分量。代码实现了滑动窗口下的奇异值分解和分组重构,适用于非线性和非平稳时间序列分析。此方法在气候变化、金融市场和生物医学信号处理等领域有广泛应用。
120 19
|
1月前
|
存储 算法 机器人
Threejs路径规划_基于A*算法案例V2
这篇文章详细介绍了如何在Three.js中使用A*算法进行高效的路径规划,并通过三维物理电路的实例演示了路径计算和优化的过程。
58 0