一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

简介: 一行代码解决LeetCode实现 strStr()使用JavaScript解题|前端学算法

实现 strStr()


实现 strStr() 函数。

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回  -1 。

示例 1:

输入:haystack = "hello", needle = "ll"

输出:2

示例 2:

输入:haystack = "aaaaa", needle = "bba"

输出:-1  


解题思路


一行代码就能解出这道题,既然是返回出现的第一个位置,完全可以使用indexOf

var strStr = function(haystack, needle) { 
     return haystack.indexOf(needle) 
 };


image.png


一行代码省时省力


但是这样好像不太好吧,不用indexOf再搞一次

可以先遍历一遍字符串,找到与目标字符串第一个字符相同的位置,然后在判断后面的是否相同

具体步骤如下:

  • 第一步:定义一个变量res,用于存储第一个字符的位置,初始值为-1
  • 第二步:如果needle.length>haystack.length,直接就可以返回-1了
  • 第三部遍历 haystack ,判断一下haystack[i]===needle[0]是否成立,如果成立,就利用substr截取字符串,再与needle判断是否相同,如果相同则跳出循环直接就返回i
var strStr = function(haystack, needle) { 
    let res= -1 
    if(needle.length>haystack.length) return res 
        for(let i=0;i<haystack.length;i++){ 
            if(haystack[i]===needle[0]){ 
                if(haystack.substr(i,needle.length) === needle){ 
                    res = i 
                    break 
                } 
            } 
        } 
    return res 
};


image.png


当然,还有另一种写法,连substr都不用,这里我直接贴出图片吧


image.png


知识点


  • substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。



目录
相关文章
|
12月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
930 0
|
12月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
523 8
|
12月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
663 8
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
732 2
|
canal 算法 vr&ar
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
【图像处理】基于电磁学优化算法的多阈值分割算法研究(Matlab代码实现)
324 1
|
12月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
562 0
|
12月前
|
机器学习/深度学习 人工智能 算法
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
【基于TTNRBO优化DBN回归预测】基于瞬态三角牛顿-拉夫逊优化算法(TTNRBO)优化深度信念网络(DBN)数据回归预测研究(Matlab代码实现)
461 0
|
12月前
|
存储 人工智能 算法
从零掌握贪心算法Java版:LeetCode 10题实战解析(上)
在算法世界里,有一种思想如同生活中的"见好就收"——每次做出当前看来最优的选择,寄希望于通过局部最优达成全局最优。这种思想就是贪心算法,它以其简洁高效的特点,成为解决最优问题的利器。今天我们就来系统学习贪心算法的核心思想,并通过10道LeetCode经典题目实战演练,带你掌握这种"步步为营"的解题思维。
|
机器学习/深度学习 存储 算法
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
【微电网调度】考虑需求响应的基于改进多目标灰狼算法的微电网优化调度研究(Matlab代码实现)
503 0
|
12月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
561 2

热门文章

最新文章