28. 实现 strStr()

LeetCode——28,实现 strStr() 函数 /** * \* Created: liuhuichao * \* Date: 2019/4/23 * \* Time: 11:25 AM * \* Description: 实现 strStr() 函数 * <p> * 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如... 阅读详情

1.题目

在这里插入图片描述

2.解法

class Solution {
    public int strStr(String haystack, String needle) {
        if (haystack == null) {
            return -1;
        }
        // 没有needle 和 空字符串是两回事
        if (needle == null || needle.length() == 0) {
            return 0;
        }
        if (haystack.length() < needle.length()) {
            return -1;
        }

        int len = haystack.length();
        int nlen = needle.length();
        int k = 0;

        // 创建距离右边得位移数组
        int[] shift = new int[123];
        for (char c : needle.toCharArray()) {
            shift[c] = nlen - k++;
        }
            
        int i = 0;
        // 现在来遍历整个haystack数组, i + nlen,是下一轮字符串开始得首位
        while (i + nlen <= len) {
            if (getEquals(haystack, needle, i)) {
                return i;
            } else {
                // 有时候会遇到haystack=abccd, needle=cd这种情况
                // i + nlen < len 不能等于,等于数组都越界了,haystack没有charAt了
                // shift不存在得值,初始赋值都为0
                if (i + nlen < len && shift[haystack.charAt(i + nlen)] != 0) {
                    i += shift[haystack.charAt(i + nlen)];
                } else {
                    i += nlen;
                }
            }
        }
        return -1;
    }

    public boolean getEquals(String str1, String str2, int i) {
        for (int j = 0; j < str2.length(); j++) {
            // i是起始位置
            if (str2.charAt(j) != str1.charAt(i + j)) {
                return false;
            }
        }
        return true;
    }
}

这种方法耗时就,占内存
@1:时间复杂度O(len),len是haystack的长度, 因为(len/nlen)* nlen = len, 空间复杂度为O(n), n是shift数组的长度,所以不再是常量级
这道题,需要再看看

3.思考

在这里插入图片描述

抖音直播间人气接口算法 抖音协议 抖音直播间人气接口算法 抖音协议 抖音算法 阅读详情

相关推荐

深入解析ROS 2 Control:从硬件抽象到实时控制的机器人框架实践

本文深入解析了ROS 2 Control机器人控制框架,阐述了其如何通过硬件抽象、控制器管理和实时性保障,解决机器人开发中硬件与软件紧耦合的痛点。文章详细剖析了其三层核心架构与数据流,并通过C++/Python代码示例演示了硬件接口的实现,最后提供了URDF配置、启动文件编写指南以及动态控制器管理、实时优化等高级应用与实战避坑技巧。

mqtt6iot的博客 623

Leetcode 28. 实现strStr() Python

Leetcode 28. 实现strStr Python题目自己解法偷鸡解法 题目 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示...

yo跟着新宇走 350

深度学习:STGCN学习笔记

目录标题基于图神经网络的图分类问题GCN在行为识别领域的应用主要任务研究思路ST-GCN(SpatialTemporal Graph Convolutional Networks for Skeleton-Based Action Recognition)解读原论文解决问题主要贡献核心思想简介OpenPose 预处理基于人体关键点构造graph构造单帧graph(空间域)构造帧间graph(时间域)ST-GCN模型采样函数权重函数空域图卷积空间-时间模型分区策略可学习的边重要性权重TCNST-GCN模型的实

zhe470719的博客 3万+

LeetCode-28 实现strStr()

LeetCode-28 实现strStr() title: ‘LeetCode-28 实现strStr()’ date: 2018/6/29 16:39:20 tag: [LeetCode,双指针,字符串] categories: 面试题 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 need...

Jae_Peng的博客 403

手把手教你接入京东购物小程序:从领券到下单的全流程解析

本文详细解析了如何从API申请到领券下单,手把手教你接入京东购物小程序的全流程。涵盖京东联盟账号注册、商品信息获取、优惠券链接转换等关键技术实践,帮助开发者高效实现电商功能集成,提升用户购物体验。

g5h6i的博客 912

【Unity的HDRP渲染管线下实现好用的GUI模糊和外描边流光效果_Blur_OutLine_案例分享(内附源码)】

因为没有用到纹理,但介于是UI层,没有MainTeX的时候,会提示报错,所以这里加上了MainTex,最后不在片段着色渲染出来既可。这样UI层级显示正常了,但旋转后的模糊效果,跟背景拼接不上,有很大的偏移。猜测是屏幕UV采样错误导致,只要找到屏幕UV数值,更正过来就可以了,RenderTexture设置一下Size既可,其他的先不管。没有贴图,用Shader实现外描边流光效果。将主相机拖入Render Camera。新建一个RenderTexture。

暴走约伯的博客 1150

Leetcode 28. Implement strStr() 实现strStr()

Leetcode 28. Implement strStr() 实现strStr() 标签: Leetcode 题目地址:https://leetcode-cn.com/problems/implement-strstr/ 题目描述 实现&nbsp;strStr()&nbsp;函数。 给定一个&nbsp;haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 n...

CoderWangSon 164

A100 NVLink集群极致优化指南

《A100 NVLink集群通信优化指南》摘要:针对A100 80G SXM机型NVLink 3.0集群,提供硬件配置检查方法(nvidia-smi topo -m)和强制启用指令。重点介绍NCCL参数调优(算法选择、低延迟协议配置)、GPUDirect RDMA启用步骤,以及单机/多机场景下的通信模式选择。包含PyTorch all_reduce基准测试方法,并给出带宽异常排查方案(dmesg检查、NCCL缓存重置)。通过CUDA Graph通信重叠和混合精度优化,可实现90%+带宽利用率。附猿界算力监控

2401_89353317的博客 592

LeetCode 28. 实现 strStr()

LeetCode 28. 实现 strStr() 文章目录LeetCode 28. 实现 strStr()题目描述一、解题关键词二、解题报告1.思路分析2.时间复杂度3.代码示例2.知识点总结相同题目 题目描述 实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问

Datao_csdn的博客 229

YOLOv8有效涨点,增强型 YOLOV8 与多尺度注意力机制特征融合,附代码,详细步骤

在本实验中,我们通过将双层路由注意(BRA)、广义特征金字塔网络(GFPN)和第四检测头结合到YOLOv8中,开发了一种新颖的BGF-YOLO架构。BGF-YOLO 包含注意力机制,可以更多地关注重要特征,特征金字塔网络可以通过将高级语义特征与空间细节合并来丰富特征表示。此外,我们研究了不同的注意力机制和特征融合、检测头架构对检测准确性的影响。实验结果表明,与YOLOv8x相比,BGF-YOLO的mAP50增加了4.7%。

kay_545 3048

PyTorch生成式人工智能(1)——神经网络与模型训练过程详解

在本节中,我们介绍了传统机器学习与人工神经网络间的差异,并了解了如何在实现前向传播之前连接网络的各个层,以计算与网络当前权重对应的损失值;实现了反向传播以优化权重达到最小化损失值的目标。并实现了网络的所有关键组成——前向传播、激活函数、损失函数、链式法则和梯度下降,从零开始构建并训练了一个简单的神经网络。

盼小辉丶的博客 1万+

LeetCode 28 实现strStr()

LeetCode 28 strStr() 1. 题解: 实现 strStr() 函数 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。

qq_51451731的博客 203

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 28 实现 strStr()

LeetCode 28 实现 strStr() 题目 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haysta...

Ailecccc的博客 119

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

LeetCode-[28] 实现strStr()

@lc app=leetcode.cn id=28 lang=java [28] 实现strStr() https://leetcode-cn.com/problems/implement-strstr/description/ algorithms Easy (38.00%) Total Accepted: 48K Total Submissions: 126.2K Testcas...

fffzlfk的博客 169

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

leetCode_28. 实现 strStr()

leetcode_28. 实现 strStr() 一、题目描述 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf()

qq_47346664的博客 354

力扣28实现strStr()

力扣28实现strStr() 概述 这道题是要在 haystack 字符串中找到 needle 字符串。下面会给出的三种解法,这三种解法都基于滑动窗口。 子串逐一比较的解法最简单,将长度为 L 的滑动窗口沿着 haystack 字符串逐步移动,并将窗口内的子串与 needle 字符串相比较,时间复杂度为 O((N - L)L)O((N−L)L) 显示上面这个方法是可以优化的。双指针方法虽然也是线性时间复杂度,不过它可以避免比较所有的子串,因此最优情况下的时间复杂度为 O(N)O(N),但最坏情况下的时间复杂

qq_40310710的博客 129

28.实现strStr()函数

每日leetcode(12) 28.实现strStr()函数 今天的题目如下 边角简单,直接用python的find函数 class Solution: def strStr(self,haystack,needle): if not needle: return 0 return haystack.find(needle) 效率...

cornorghost的博客 191

LeetCode第28题:实现strStr()

LeetCode第28题:实现strStr() 题目 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: hay...

不写代码的博客 265

1. LeetCode 28. 实现 strStr()

LeetCode 28. 实现 strStr() 天津科技大学第六届科技文化节算法设计大赛第1题 难度:简单 题目: 实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。 说明: 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 st

tuygioj的博客 162

LeetCode28题 实现strStr() C语言

LeetCode28题 实现strStr() C语言 实现 strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaaa”, needle = “bba” 输出: -1 说明: 当

weixin_45356258的博客 243

Leetcode28. 实现strStr()

Leetcode28. 实现strStr() 题目描述: 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 实例: 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haystack = “aaaa...

weixin_43199534的博客 148

leetcode 实现28.strStr()

leetcode 实现28.strStr() 已战胜99.20%。可以借鉴一下 int strStr(string haystack, string needle) { if (needle == "") return 0; int pos_r = 0, pos =-1; for (int i = 0; i &lt; haystack.length(); i++) { if (...

Alexmomom的博客 284

LeetCode 28. 实现strStr()

LeetCode 28. 实现strStr() 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。 示例 1: 输入: haystack = “hello”, needle = “ll” 输出: 2 示例 2: 输入: haysta...

UN_uomo的博客 208
上一篇: 26. 删除排序数组中的重复项
下一篇: 29.两数相除
念殊15
博客等级 码龄8年 17粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值