当前位置: 首页 > news >正文

input 不能为空 js_我用JS刷LeetCode | Day 9 | Implement strStr()

59bebd5354ca81a5ed1ba8e5e44375ae.png

如有兴趣,微信搜索「九零后重庆崽儿」,我们一起学前端。

删除排序数组中的重复项:

说明:现阶段的解题暂未考虑复杂度问题

首发地址:

我用JS刷LeetCode | Day 9 | Implement strStr()​www.brandhuang.com

Question:

Implement strStr().

Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

Clarification:

What should we return when needle is an empty string? This is a great question to ask during an interview.

For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C's strstr() and Java's indexOf().

中文题目:

实现 strStr() 函数。

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

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

Example:

Input: haystack = "hello", needle = "ll"
Output: 2

Input: haystack = "aaaaa", needle = "bba"
Output: -1

个人分析:

  1. 看到题目第一想法, 可以使用 indexOf,于是得到 答案一
  2. 分享几个其他答案:你有想到将输入的 haystack 以 needle 为分隔符,转换成字符串吗?转换成的数组的第一个元素的长度,就是我们需要的找的字符串出现的第一个位置,于是得到 答案二.
  3. needlehaystack 相等,或者 needle 为空,则直接返回 0。然后 遍历 haystack, 当 haystack 中出现某个元素与 needle 中第一个元素相等时,利用 substring 方法,从当前元素开始,在 haystack中截取 neddle 长度的字符串,比较截取的值是否和 needle 相等,若相等,当前元素的索引即为所求的值,否则返回 -1,于是得到 答案三

Answer:

// 答案一
var strStr = function(haystack, needle) {
     return haystack.indexOf(needle)
};

//答案二
var strStr = function(haystack, needle) {
    if (needle === '') return 0;
    const split = haystack.split(needle);
    return split.length > 1 ? split[0].length : -1;
};

// 答案三
var strStr = function(haystack, needle) {
    if (haystack === needle || needle === "") {
        return 0;
    }
    for (let i = 0; i < haystack.length; i++) {
        if (haystack[i] === needle[0]) {
            let temp = haystack.substring(i, i + needle.length);
            if (temp === needle) {
                return i;
            }
        }
    }
    return -1;
};

其他:

本题更多 JavaScript 解析,点击链接访问对应的答案:https://leetcode.com

相关文章:

  • 宝塔同时安装苹果cms海洋cms_maccms安装了后接下来做什么?
  • hive 修改表的存储格式_Hive存储格式
  • mac redis 链接_2018 MAC下安装Redis和Redis可视化工具RDM并连接Redis
  • python的lib文件夹在哪_如何导入模块中的lib文件夹
  • heidisql连接不是本地_本地备份与云备份:选择您的备份计划
  • ibaties 更新 数据类型不一致_关于Python 3.9,那些你不知道的事
  • join为什么每个字符都分割了 js_【项目总结】之——JS分割字符串
  • rto净化效率计算公式_吕梁油墨厂RTO焚烧炉设计计算
  • 修改段落内容_为什么论文修改后重复率还变高?
  • windbg找不到pdb文件_使用Windbg时关于符号文件路径设置问题
  • layui open传参_layui 打开新页面,并传入参数
  • cnc加工中心保养表_CNC加工中心有哪些日常保养方法?
  • ffplay拉流时间长卡住_杭州女子崩溃:我吞了个勺子进去,14厘米长!事情要从一条鱼说起…...
  • 多台路由器堆叠_一文了解核心交换机的链路聚合、冗余、堆叠、热备份等专业知识...
  • 会计初级可以自己报名吗_初级会计考试报名入口
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • Date型的使用
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • jdbc就是这么简单
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • php中curl和soap方式请求服务超时问题
  • python3 使用 asyncio 代替线程
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • spark本地环境的搭建到运行第一个spark程序
  • Swift 中的尾递归和蹦床
  • Theano - 导数
  • vue2.0项目引入element-ui
  • 前端之React实战:创建跨平台的项目架构
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 收藏好这篇,别再只说“数据劫持”了
  • mysql面试题分组并合并列
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • #include<初见C语言之指针(5)>
  • #前后端分离# 头条发布系统
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()方法详解
  • (26)4.7 字符函数和字符串函数
  • (3)(3.5) 遥测无线电区域条例
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (二)windows配置JDK环境
  • (二)构建dubbo分布式平台-平台功能导图
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (一)Linux+Windows下安装ffmpeg
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • (转) Android中ViewStub组件使用
  • .net 4.0发布后不能正常显示图片问题
  • .NET Framework 和 .NET Core 在默认情况下垃圾回收(GC)机制的不同(局部变量部分)
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET 反射 Reflect
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证