LeetCode 392 判断子序列

本文介绍了一个高效的算法,用于判断一个字符串是否为另一个长字符串的子序列。通过双指针技术,该算法能在O(n)的时间复杂度内完成任务,特别适用于s短、t长的情况。文章提供了详细的代码实现及示例。
  • 1. 题目链接
https://leetcode-cn.com/problems/is-subsequence/
  • 2. 题目描述

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

你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。

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

示例 1:
s = "abc", t = "ahbgdc"

返回 true.

示例 2:
s = "axc", t = "ahbgdc"

返回 false.
  • 3.  题目解析

双指针实现,如果s是t的子序列,则字符串s是按顺序出现在字符串中。

  • 4. 代码实现
bool isSubsequence(char * s, char * t){
    while (*s && *t) {
        if (*s == *t) 
            s++;
        t++;
    }
    if (*s == '\0')
        return true;
    else
        return false;
}
  • 5. 提交记录

### SAM模型概述 SAM(Segment Anything Model)是一种由Meta开发的通用分割模型,旨在解决图像中的任意目标分割问题。它通过学习一组可以泛化到新类别和场景的目标表示来实现这一目的[^1]。 #### 工作原理 SAM的核心理念在于其能够生成高质量的掩码(masks),这些掩码用于精确描述输入图像中特定区域的内容。具体来说: - **编码器部分**:SAM利用了一个强大的视觉Transformer作为骨干网络,该网络负责提取高层次特征并理解整个图像语义信息。 - **解码器部分**:基于来自编码器的信息以及用户的提示(prompts),如点击位置或者边界框等简单指示,解码器会生成最终所需的像素级精度的分割结果[^2]。 这种设计使得即使是在未见过的数据集上也能表现出色,因为模型已经学会了如何根据不同类型的提示去适应各种可能的任务需求。 #### 应用场景 由于其灵活性高效性,SAM适用于多个领域内的实际应用案例之中: 1. **医疗影像分析**:通过对医学扫描图片进行精准标注从而辅助医生诊断疾病状态; 2. **自动驾驶技术**:帮助车辆识别道路上行人、障碍物及其他重要元素以便做出安全决策; 3. **增强现实/虚拟现实环境构建**:允许开发者更方便快捷地创建交互式的三维空间体验产品原型。 以下是关于如何加载预训练权重的一个Python代码片段示例: ```python import torch from segment_anything import sam_model_registry, SamPredictor device = 'cuda' if torch.cuda.is_available() else 'cpu' sam_checkpoint = "path/to/sam_vit_h_4b8939.pth" model_type = "vit_h" sam = sam_model_registry[model_type](checkpoint=sam_checkpoint).to(device=device) predictor = SamPredictor(sam) image_path = "./example.jpg" input_image = cv2.imread(image_path) input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2RGB) predictor.set_image(input_image) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值