算法篇——字符串大集合(js版)

news2024/9/28 17:33:45

344.反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
链接:https://leetcode.cn/problems/reverse-string

var reverseString = function(s) {
    var n = s.length - 1;
    var index_l = Math.floor(n / 2);
    var index_r = index_l + 1; 
    var temp = 0;
    // 字符串元素个数为奇数时
    if(s.length % 2 != 0) {
        // 中间的元素不交换,左指针向前遍历
        index_l--;
        for(var i = index_l; i < n-1; i++) {
            temp = s[index_l];
            s[index_l] =s[index_r];
            s[index_r] = temp;
            index_l--;
            index_r++;
        }
    }
    // 字符串元素个数为偶数时
    else {
        for(var i = index_l; i < n; i++) {
            temp = s[index_l];
            s[index_l] =s[index_r];
            s[index_r] = temp;
            index_l--;
            index_r++;
        }
    }
};

541.反转字符串Ⅱ

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

· 如果剩余字符少于 k 个,则将剩余字符全部反转。
· 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
链接:https://leetcode.cn/problems/reverse-string-ii

var reverseStr = function(s, k) {
    var res = [];
    var len = s.length;
    for (var i = 0; i < len; i += 2 * k) {
        // 需要反转的所有部分
        needStr = s.substring(i, i + k).split('').reverse().join('');
        // 需要保留的所有部分
        lastStr = s.substring(i + k, i + 2 * k);
        // concat 进行拼接
        res.push(needStr.concat(lastStr));
    }
    return res.join('');
};

剑指Offer 05.替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

链接:力扣

 

var replaceSpace = function(s) {
    var res = s.split("");
    for(var i = 0; i < s.length; i++) {
        if(res[i] == " ") {
            res[i] = "%20";
        }
    }
    return res.join("");
};

151.翻转字符串里的单词

给你一个字符串 s ,请你反转字符串中 单词 的顺序。

单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

注意:输入字符串 s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。
链接:https://leetcode.cn/problems/reverse-words-in-a-string

var reverseWords = function(s) {
    var res = s.split("");
    // 移除多余空格
    var slow = 0, fast = 0;
    while(fast < res.length) {
        // 开头是空格,或是有重复空格
        if(res[fast] == " " && (fast == 0 || res[fast - 1] == " ")) fast++;
        // 否则继续遍历
        else res[slow++] = res[fast++];
    }
    // 末尾是空格
    if(res[slow - 1] == " ") res.length = slow - 1;
    else res.length = slow;
    // 整体翻转数组
    reverse(res, 0, res.length - 1);
    // 每个单词的首字母
    var str = 0;
    // 翻转每个单词
    for(var i = 0; i <= res.length; i++) {
        if (res[i] == " " || i == res.length) {
            // 翻转单词
            reverse(res, str, i-1)
            str = i + 1;
        }
   }
   return res.join("");
};
function reverse(res, start, end) {
    var left = start, right = end;
    while(left < right) {
        // 交换
        [res[left], res[right]] = [res[right], res[left]];
        left++;
        right--;
    }
}

剑指Offer58-II.左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
链接:https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof

 

var reverseLeftWords = function(s, k) {
    // 截取需要的部分
    var needStr = s.substring(0, k);
    // 截取剩余的部分
    var lastStr = s.substring(k, s.length);
    return lastStr.concat(needStr);
};

28.实现 strStr()

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1 。
链接:https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string

 

var strStr = function(haystack, needle) {
    for(var i = 0; i + needle.length <= haystack.length; ++i) {
        var flag = 1;
        for(var j = 0; j < needle.length; ++j) {
            if(haystack[i + j] != needle[j]) {
                flag = 0;
                break;
            }
        }
        if(flag) return i;
    }
    return -1;
};

459.重复的子字符串 

给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

链接:力扣

var repeatedSubstringPattern = function(s) {
    var str = s + s;
    return str.substring(1, str.length - 1).includes(s);
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/438622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SWCF QA集锦待查收 (车联网与V2X、自动驾驶、5G毫米波、射频测试、频谱监测与规划等)

感谢大家的观看与支持&#xff01;我们为大家整理了本次发布会中的演讲资料&#xff0c;汇总了直播过程中的热点问题并请讲师进行了详细解答&#xff0c;在此整理分享给大家&#xff01; 演讲Q&A Q&#xff1a;目前5G天线支持最大的MIMO是多少&#xff1f; A&#xff1a;…

为什么会是植物神经紊乱 如何辨别

很多人都认为&#xff0c;疾病一定能通过仪器检查出来&#xff0c;很多时候去医院检查的时候&#xff0c;大多都需要进行各种的仪器检查&#xff0c;但是当仪器都检查不出来的时候&#xff0c;大家就认为没有生病。其实&#xff0c;当出现浑身不适的时候&#xff0c;检查检查不…

LeNet网络简介

1. 背景 主要介绍LeNet网络预测在CIFAR-10图像数据集上的训练及预测。 2. CIFAR-10图像数据集简介 CIFAR-10是一个包含了6W张32*32像素的三通道彩色图像数据集&#xff0c;图像划分为10大类&#xff0c;每个类别包含了6K张图像。其中训练集5W张&#xff0c;测试集1W张。 数…

window环境rabbitMq安装

RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写&#xff0c;即需要先安装部署Erlang环境再安装RabbitMQ环境*需加注意的是&#xff0c;可根据两者版本号的对应表&#xff0c;安装相应版本的Erlang和RabbitMQ。 一、安装准备工具 版本查看地址&#xff1a;Rabbi…

mysql的启动关闭原理和实战、及常见的错误排查

前言 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系…

日本政府官宣:投资42亿日元,量子计算要上“云”

引《日经新闻》报道&#xff0c;日本政府宣布将投资4.2亿日元&#xff08;约合2.18亿人民币&#xff09;来支持量子计算领域的发展。这笔资金将被用于扩大云计算平台上的共享量子计算能力&#xff0c;为企业提供更加高效的量子计算服务。该计划将由东京大学领导&#xff0c;支持…

【LeetCode: 1187. 使数组严格递增 | 暴力递归=>记忆化搜索=>动态规划 】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

STL——list、stack与queue

&#x1f4d6;作者介绍&#xff1a;22级树莓人&#xff08;计算机专业&#xff09;&#xff0c;热爱编程&#xff1c;目前在c&#xff0b;&#xff0b;阶段>——目标Windows&#xff0c;MySQL&#xff0c;Qt&#xff0c;数据结构与算法&#xff0c;Linux&#xff0c;多线程&…

Springboot 整合 Mybatis

创建SpringBoot项目 首先在IDEA中创建一个SpringBoot项目&#xff0c;注意Java Version 然后Packaging为Jar包形式&#xff0c;Type改为Maven形式。 在上图的下一步中可以选择相关依赖&#xff0c;也可以在项目里面的pom文件中自己添加相关依赖&#xff0c;然后进行import也可…

在外包搞了7年,废了.....

我以自身的经验告诫大家&#xff0c;不要去外包&#xff0c;原因&#xff1a; 无法深入理解项目&#xff1a;由于外包公司通常只负责项目的某一个部分或某一个阶段&#xff0c;软件测试人员无法对整个项目进行深入了解&#xff0c;可能会影响到测试的全面性和准确性。 对测试要…

RB-PEG-NHS;NHS-PEG-Rhodamine罗丹明聚乙二醇琥珀酰亚胺 红色荧光染料罗丹明B功能化聚乙二醇

RB-PEG-NHS,罗丹明-聚乙二醇-活性脂 中文名称&#xff1a;罗丹明-聚乙二醇-活性脂 英文名称&#xff1a;RB-PEG-NHS 性状&#xff1a;固体或者粘稠液体&#xff0c;取决于分子量大小。 溶剂&#xff1a;溶于大部分有机溶剂&#xff0c;溶于水。 分子量&#xff1a;400、60…

【深度学习】RNN、LSTM、GRU

【深度学习】RNN、LSTM、GRU RNNLSTMGRU结语 RNN 和普通神经网络一样&#xff0c;RNN有输入层、输出层和隐含层&#xff0c;不一样的是RNN在不同的时间 t t t会有不同的状态&#xff0c;其中 t − 1 t-1 t−1时刻隐含层的输出会作用到 t t t时刻的隐含层。 RNN因为加入了时间…

强大的图像查看器:EdgeView mac中文

EdgeView mac中文版是mac上一款强大的图像查看软件&#xff0c;可以处理一些最流行的图像文件格式&#xff0c;同时还提供对导航杂志或漫画书的支持。EdgeView能够打开著名的图像文件格式主要包括JPG&#xff0c;GIF&#xff0c;PSD在内的多种格式文件&#xff0c;支持Retina显…

深度解析JavaScript自动化测试工具Cypress的工作运行原理

目录 引言 什么是Cypress&#xff1f; Cypress的工作原理 Cypress运行原理 Cypress和其他自动化测试工具有什么不一样&#xff1f; Cypress的缺点 【自动化测试工程师学习路线】 引言 在当今的软件开发中&#xff0c;自动化测试工具已成为不可或缺的一部分&#xff0c;…

负载均衡式在线OJ

目录 项目介绍所用技术与开发环境所用技术开发环境 项目各种安装升级 gcc安装 jsoncpp安装 cpp-httplib安装boost库安装与测试 ctemplate 项目宏观结构总体文件目录comm : 公共模块compile_run_server&#xff1a;编译和运行compiler.hpp编译runner.hpp 运行compiler_runner.hp…

ChatGPT 速通手册——开源社区的进展

开源社区的进展 在 ChatGPT 以外&#xff0c;谷歌、脸书等互联网巨头&#xff0c;也都发布过千亿级参数的大语言模型&#xff0c;但在交谈问答方面表现相对 ChatGPT 来说都显得一般。根据科学人员推测&#xff0c;很重要的一部分原因是缺失了RLHF(Reinforcement Learning with…

Banana Pi CM4 计算机模组评测(VS 树莓派计算模块 CM4)

如果您正在寻找一款可靠的单板计算机来提升您的下一个项目&#xff0c;但找不到满足您需求的 Raspberry Pi&#xff0c;让我们看看我是否可以提供帮助。在这篇详细的评论中&#xff0c;我将向您介绍 Banana Pi CM4&#xff0c;这是一款适用于各种任务的多功能且功能强大的解决方…

【OpenCV 例程 300篇】257.OpenCV 生成随机矩阵

『youcans 的 OpenCV 例程300篇 - 总目录』 【youcans 的 OpenCV 例程 300篇】257. OpenCV 生成随机矩阵 3.2 OpenCV 创建随机图像 OpenCV 中提供了 cv.randn 和 cv.randu 函数生成随机数矩阵&#xff0c;也可以用于创建随机图像。 函数 cv.randn 生成的矩阵服从正态分布&…

【caddy】 caddy反向代理api服务 聚合go-zero微服务 放过nginx让caddy来快速实现吧

帮助go-zero开发者聚合api 相关视频一、go-zero 微服务整体架构1、微服务的基本架构2、go-zero 微服务的 apiauthrpc.api 文件routes.go 文件 二、本地开发的痛点1、本地多个端口开启的服务2、apifox、postman 三、caddy1、mac下caddy安装2、配置我们自己的caddyfile1&#xff…

SpringBootWeb入门-HTTP协议

一、SpringBootWeb-快速入门 建好springboot工程之后&#xff0c;只留下这几个文件。 这个是springboot的父工程&#xff0c;其实就是继承 二、HTTP协议-概述 •HTTP-概述 三、HTPP协议-请求协议 四、HTTP协议-响应协议 一、状态码大类 状态码分类说明1xx响应中——临时状态码…