首页 > 编程语言 >代码随想录算法训练营第十天 | ●28. 实现 strStr() ●459.重复的子字符串 ●字符串总结 ●双指针回顾

代码随想录算法训练营第十天 | ●28. 实现 strStr() ●459.重复的子字符串 ●字符串总结 ●双指针回顾

时间:2023-11-19 19:23:31浏览次数:40  
标签:return 第十天 needle 随想录 E7% next length let 字符串

今日学习的文章链接和视频链接

●28. 实现 strStr()

var strStr = function (haystack, needle) {
    if (needle.length === 0)
        return 0;

    const getNext = (needle) => {
        let next = [];
        let j = -1;
        next.push(j);

        for (let i = 1; i < needle.length; ++i) {
            while (j >= 0 && needle[i] !== needle[j + 1])
                j = next[j];
            if (needle[i] === needle[j + 1])
                j++;
            next.push(j);
        }

        return next;
    }

    let next = getNext(needle);
    let j = -1;
    for (let i = 0; i < haystack.length; ++i) {
        while (j >= 0 && haystack[i] !== needle[j + 1])
            j = next[j];
        if (haystack[i] === needle[j + 1])
            j++;
        if (j === needle.length - 1)
            return (i - needle.length + 1);
    }

    return -1;
};

●459.重复的子字符串

var repeatedSubstringPattern = function (s) {
    if (s.length === 0)
        return false;

    const getNext = (s) => {
        let next = [];
        let j = -1;

        next.push(j);

        for (let i = 1; i < s.length; ++i) {
            while (j >= 0 && s[i] !== s[j + 1])
                j = next[j];
            if (s[i] === s[j + 1])
                j++;
            next.push(j);
        }

        return next;
    }

    let next = getNext(s);

    if (next[next.length - 1] !== -1 && s.length % (s.length - (next[next.length - 1] + 1)) === 0)
        return true;
    return false;
};

●字符串总结

- https://programmercarl.com/%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%80%BB%E7%BB%93.html#%E4%BB%80%E4%B9%88%E6%98%AF%E5%AD%97%E7%AC%A6%E4%B8%B2

●双指针回顾


- https://programmercarl.com/%E5%8F%8C%E6%8C%87%E9%92%88%E6%80%BB%E7%BB%93.html#%E6%95%B0%E7%BB%84%E7%AF%87

今日收获,记录一下自己的学习时长

4h

标签:return,第十天,needle,随想录,E7%,next,length,let,字符串
From: https://www.cnblogs.com/lijiacheng/p/17842423.html

相关文章

  • 代码随想录算法训练营第八天 | ● 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54
    今日学习内容●344.反转字符串varreverseString=function(s){//returns.reverse();for(leti=0,j=s.length-1;i<Math.floor(s.length/2);i++,j--){[s[i],s[j]]=[s[j],s[i]]}returns};●541.反转字符串IIvarre......
  • 【洛谷 P1125】[NOIP2008 提高组] 笨小猴 题解(字符串+映射+集合)
    [NOIP2008提高组]笨小猴题目描述笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大!这种方法的具体描述如下:假设是单词中出现次数最多的字母的出现次数,是单词中出现次数最少的字母的出现次数,......
  • web sql 的查询的参数类型需要为字符串类型
    var grade = (info.split('')[3]-2)一开始的grade的类型是数字,websql怎么也无法按grade查询出来数据,左思右想,后来把它变成了字符串类型,终于成功查询出来了结果. var grade = (info.split('')[3]-2).toString() resultshowselect2(db, 'users', [grade, part......
  • 字符串排序 星期几换算
    7-5字符串排序本题要求编写程序,读入5个字符串,按由小到大的顺序输出。输入格式:输入为由空格分隔的5个非空字符串,每个字符串不包括空格、制表符、换行符等空白字符,长度小于80。输出格式:按照以下格式输出排序后的结果:Aftersorted:每行一个字符串输入样例:redyellow......
  • Code-C++-字符串分割
    Code-C++-字符串分割转自【C++中string如何实现字符串分割函数split()——4种方法-CSDNApp】http://t.csdnimg.cn/8iWb7stringstreamgetline()stringfind()substr()ccharstrtok()strtok_r()regex_token_iterator<>getline()voidStringsplit(stringstr,const......
  • 代码随想录算法训练营第七天 | ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和
    今日学习的文章链接和视频链接https://programmercarl.com/链表理论基础.html●454.四数相加IIvarfourSumCount=function(nums1,nums2,nums3,nums4){letcount=0letmap=newMap();for(letnumber1ofnums1){for(letnumber2ofnums......
  • 代码随想录算法训练营第六天 |● 哈希表理论基础 ● 242.有效的字母异位词 ● 349.
    今日学习的文章链接和视频链接https://programmercarl.com/哈希表理论基础.html242.有效的字母异位词varisAnagram=function(s,t){if(s.length!==t.length)returnfalseletmap=newMap();for(letcharofs){if(!map.get(char)){......
  • Java零基础入门-字符串
    Java零基础入门-字符串前言Java是一门非常强大的编程语言,在计算机领域拥有广泛的应用。作为Java的入门阶段,掌握字符串的基本概念以及使用方法是非常重要的,它也是Java程序中经常使用的一种数据类型。本文将从Java字符串的定义、创建、内容操作等方面进行详细阐述,给读者带来更加全......
  • js 的对象之 字符串对象
     javascript中的对象分为3种:自定义对象,内置对象,浏览器对象JavaScript中的所有事物都是对象:字符串、数字、数组、日期,等等。在JavaScript中,对象是拥有属性和方法的数据。1.对象Object创建对象var对象名称=newObject();设置对象属性对象名称.属性名=值;设置对象......
  • mysql函数常见字符串函数
    1、BIT_LENGTH返回值为二进制的字符串str长度。--格式:BIT_LENGTH(str)selectBIT_LENGTH('abc'); 2、CONCAT返回结果为连接参数产生的字符串。--格式:concat(str1,str2,…)selectCONCAT('a','b','c')   3、ELT假设n等于1,用这个n去跟后一个数比较,如果n大......