【算法千题案例】每日LeetCode打卡——72.判断子序列

简介: 📢前言🌲原题样例:判断子序列🌻C#方法🌻Java 方法:使用哈希表存储频数💬总结

📢前言

🚀 算法题 🚀

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

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

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

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

🚀 算法题 🚀

🌲原题样例:判断子序列

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。


字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例1:

输入:s = "abc", t = "ahbgdc"
输出:true

示例2:

输入:s = "axc", t = "ahbgdc"
输出:false

提示:

  • 0 <= s.length <= 100
  • 0 <= t.length <= 10^4
  • 两个字符串都只由小写字符组成。


🌻C#方法

用一个简单的办法,每个字符遍历判断是否相同~

代码:

public class Solution {
public int FirstUniqChar(string s) {
    int[] arr=new int[26];  //26个字母的数组
    for(int i=0;i<s.Length;i++)
    {
        arr[s[i]-'a']+=1;  //a--0 b--1………… 对应位置数字+1
    }
    for(int i=0;i<s.Length;i++)
    {
        if(arr[s[i]-'a']==1)  //当该位置数字为1
        {
            return i;
        }
    }
    return -1;
}
}

执行结果

通过
执行用时:84 ms,在所有 Java  提交中击败了18.50%的用户
内存消耗:36.4 MB,在所有 Java 提交中击败了28.50%的用户

🌻Java 方法:使用哈希表存储频数

思路解析

image.png

代码:

class Solution {
    public boolean isSubsequence(String s, String t) {
        int n = s.length(), m = t.length();
        int i = 0, j = 0;
        while (i < n && j < m) {
            if (s.charAt(i) == t.charAt(j)) {
                i++;
            }
            j++;
        }
        return i == n;
    }
}

执行结果

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

复杂度分析

时间复杂度:O( n+m )
空间复杂度:O( 1 )

💬总结

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


相关文章
|
4天前
|
算法 搜索推荐 编译器
算法高手养成记:Python快速排序的深度优化与实战案例分析
【7月更文挑战第11天】快速排序是编程基础,以O(n log n)时间复杂度和原址排序著称。其核心是“分而治之”,通过选择基准元素分割数组并递归排序两部分。优化包括:选择中位数作基准、尾递归优化、小数组用简单排序。以下是一个考虑优化的Python实现片段,展示了随机基准选择。通过实践和优化,能提升算法技能。**
8 3
|
10天前
|
算法
刷算法Leetcode---9(二叉树篇Ⅲ)
刷算法Leetcode---9(二叉树篇Ⅲ)
11 3
|
17天前
|
存储 算法 搜索推荐
力扣每日一题 6/13 反悔贪心算法
力扣每日一题 6/13 反悔贪心算法
12 1
|
28天前
|
算法 Java
[Java·算法·简单] LeetCode 283. 移动零
[Java·算法·简单] LeetCode 283. 移动零
23 2
|
28天前
|
算法 Java
[Java·算法·中等] LeetCode21. 合并两个有序链表
[Java·算法·中等] LeetCode21. 合并两个有序链表
18 2
|
1月前
|
存储 算法 调度
力扣中级算法(Python)
力扣中级算法(Python)
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-2
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
算法 C++
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题-1
【数据结构与算法】:关于时间复杂度与空间复杂度的计算(C/C++篇)——含Leetcode刷题
|
1月前
|
算法 Python
力扣初级算法(Python)(二)
力扣初级算法(Python)(二)
|
1月前
|
算法 Python
力扣初级算法(Python)(一)
力扣初级算法(Python)(一)