【Leetcode60天带刷】day09字符串—— 459.重复的子字符串,28. 实现 strStr(),剑指Offer 05.替换空格

news2024/11/26 21:45:56


  题目:

459. 重复的子字符串

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

示例 1:

输入: s = "abab"
输出: true
解释: 可由子串 "ab" 重复两次构成。

示例 2:

输入: s = "aba"
输出: false

示例 3:

输入: s = "abcabcabcabc"
输出: true
解释: 可由子串 "abc" 重复四次构成。 (或子串 "abcabc" 重复两次构成。)

提示:

  • 1 <= s.length <= 104
  • s 由小写英文字母组成

 题解:

class Solution {
public:
    bool repeatedSubstringPattern(string s) {
        string t = s + s;
        t.erase(t.begin()); t.erase(t.end() - 1); // 掐头去尾
        if (t.find(s) != std::string::npos) return true; // r
        return false;
    }
};

题目:

28. 找出字符串中第一个匹配项的下标

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回  -1 

示例 1:

输入:haystack = "sadbutsad", needle = "sad"
输出:0
解释:"sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。

示例 2:

输入:haystack = "leetcode", needle = "leeto"
输出:-1
解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。

提示:

  • 1 <= haystack.length, needle.length <= 104
  • haystack 和 needle 仅由小写英文字符组成


 题解:

class Solution {
public:
    void getNext(int* next, const string& s) {
        int j = -1;
        next[0] = j;
        for(int i = 1; i < s.size(); i++) { // 注意i从1开始
            while (j >= 0 && s[i] != s[j + 1]) { // 前后缀不相同了
                j = next[j]; // 向前回退
            }
            if (s[i] == s[j + 1]) { // 找到相同的前后缀
                j++;
            }
            next[i] = j; // 将j(前缀的长度)赋给next[i]
        }
    }
    int strStr(string haystack, string needle) {
        if (needle.size() == 0) {
            return 0;
        }
        int next[needle.size()];
        getNext(next, needle);
        int j = -1; // // 因为next数组里记录的起始位置为-1
        for (int i = 0; i < haystack.size(); i++) { // 注意i就从0开始
            while(j >= 0 && haystack[i] != needle[j + 1]) { // 不匹配
                j = next[j]; // j 寻找之前匹配的位置
            }
            if (haystack[i] == needle[j + 1]) { // 匹配,j和i同时向后移动
                j++; // i的增加在for循环里
            }
            if (j == (needle.size() - 1) ) { // 文本串s里出现了模式串t
                return (i - needle.size() + 1);
            }
        }
        return -1;
    }
};


题目:

剑指 Offer 05. 替换空格

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

示例 1:

输入:s = "We are happy."
输出:"We%20are%20happy."

限制:

0 <= s 的长度 <= 10000


 题解:

class Solution {
public:
    string replaceSpace(string s) {
        int count = 0; // 统计空格的个数
        int sOldSize = s.size();
        for (int i = 0; i < s.size(); i++) {
            if (s[i] == ' ') {
                count++;
            }
        }
        // 扩充字符串s的大小,也就是每个空格替换成"%20"之后的大小
        s.resize(s.size() + count * 2);
        int sNewSize = s.size();
        // 从后先前将空格替换为"%20"
        for (int i = sNewSize - 1, j = sOldSize - 1; j < i; i--, j--) {
            if (s[j] != ' ') {
                s[i] = s[j];
            } else {
                s[i] = '0';
                s[i - 1] = '2';
                s[i - 2] = '%';
                i -= 2;
            }
        }
        return s;
    }
};


欢迎点赞,收藏,评论,你的鼓励就是我创作的最大动力!(๑╹◡╹)ノ"""

版权声明:本文为CSDN博主「渡梦酒」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:渡梦酒的博客_CSDN博客-csdn领域博主

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

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

相关文章

Grammarly:AI语法检测写作助手工具

【产品介绍】 Grammarly是于2009年发布&#xff0c;当前使用最普遍和准确的英语语法检查&#xff08;grammar checker&#xff09;、拼写、校对&#xff08;proofreading&#xff09;检查和抄袭&#xff08;plagiarism&#xff09;检测软件工具&#xff0c;其中Grammarly校对检…

pytorch笔记:transformer 和 vision transformer

来自B站视频&#xff0c;API查阅&#xff0c;TORCH.NN seq2seq 可以是 CNN&#xff0c;RNN&#xff0c;transformer nn.Transformer 关键源码&#xff1a; encoder_layer TransformerEncoderLayer(d_model, nhead, dim_feedforward, dropout,activation, layer_norm_eps, ba…

杂谈 | 人类微生物组研究:解析挑战与前景

谷禾健康 人类微生物组研究正在从描述关联发展到了解整个微生态对人类的影响。虽然存在挑战&#xff0c;但在应用数据驱动的微生物组诊断和干预方面正在取得进展&#xff0c;这可能会在未来十年内带来精准医学的突破。 本文我们来探讨关于微生物组的研究进展及其对人类健康的影…

Windows10配置Kiosk(展台)模式

Windows10配置Kiosk&#xff08;展台&#xff09;模式 新建Kiosk专用用户 进入windows设置->账户->家庭与其他用户&#xff0c;点击’将其他人添加到这台电脑’ 在弹出的对话框里&#xff0c;点击我没有这个人的登录信息&#xff0c;然后添加一个没有Microsoft账户的用…

什么是眼图

眼图是指示波器用余辉方式将捕获的波形按每3bit的形式累积叠加显示采集到的串行信号的比特位的结果&#xff0c;叠加后的图形形状看起来和眼睛很像 眼图有很多参数&#xff0c;可以用来量化信号的质量&#xff0c;例如&#xff1a; 眼高&#xff1a;指眼图中最大和最小电压之差…

WOT全球技术创新大会2023在京召开:创新不止,实战为王

AIGC、大模型、大算力异常火爆的背后&#xff0c;其应用场景是什么、商业实践有何规律可循&#xff1f;多云实践、业务架构演进、研发效能等看似“老生常谈”的技术热点&#xff0c;在崇尚业务创新的当前时代有何新的发展趋势&#xff1f; 6月16-17日&#xff0c;51CTO集结50来…

android存储2--初始化.存储service的启动

android版本&#xff1a;android-11.0.0_r21 http://aospxref.com/android-11.0.0_r21/ android存储初始化分3个阶段&#xff1a; 1&#xff09;清理环境。因android支持多用户&#xff0c;解锁后登录的可能是另一个用户&#xff0c;需把之前用户执行的一些信息清理干净。《an…

Net6.0项目升级到Net7.0

NetCore3.1升级到Net6.0&#xff0c;可参考此文章&#xff1a;NetCore3.1项目升级到Net6.0_vs2022 没有startup_csdn_aspnet的博客-CSDN博客 其实与我之前发布的步骤基本一致&#xff0c;升级到net6.0之后&#xff0c;在升级net7.0基本没有可修改的代码&#xff0c;只是升级一…

NOTA双功能螯合剂:NOTA PEG11 MeTz,NOTA PEG11 Azide,两者试剂信息知识总结说明

NOTA及其衍生物是新型双功能整合剂之一。NOTA及其衍生物具有良好的配位和鳌合能力&#xff0c;可作为过渡金属离子的配体。 本文主要就NOTA PEG11 MeTz&#xff0c;NOTA PEG11 Azide两者进行说明&#xff0c;以下内容希望可以帮助到大家。 一、MeTz-PEG11-NOTA 理论分析&#…

【spring源码系列-06】refresh中obtainFreshBeanFactory方法的执行流程

Spring源码系列整体栏目 内容链接地址【一】spring源码整体概述https://blog.csdn.net/zhenghuishengq/article/details/130940885【二】通过refresh方法剖析IOC的整体流程https://blog.csdn.net/zhenghuishengq/article/details/131003428【三】xml配置文件启动spring时refres…

汽车云端主题的实现与应用

主题指的是车载电子中&#xff0c;如仪表&#xff0c;IVI等跟视觉相关的显示设备、包括车身&#xff0c;在不同的自定义模式下的不同显示表现。我们也可以把它理解成为皮肤。 传统的车身皮肤&#xff08;别克ELECTRA E5&#xff09; 传统主题的特点 固定&#xff0c;单一&…

使用Flow发送企业应用的通知到微信里

今天我们以kintone作为企业应用管理平台来解释&#xff0c;怎么使用flow发送企业的通知到微信上。 完成后的样子 &#xff11;&#xff0e;Microsoft Flow响应kintone添加记录的Webhook。 &#xff12;&#xff0e;Microsoft Flow向微信发送消息。 微信是什么&#xff1f; …

【Leetcode60天带刷】day13栈与队列—— 239. 滑动窗口最大值,347.前 K 个高频元素

题目&#xff1a; 239. 滑动窗口最大值 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例 1&#xff1a; 输入&#xf…

Git进阶系列 | 1. 创建完美的提交

Git是最流行的代码版本控制系统&#xff0c;这一系列文章介绍了一些Git的高阶使用方式&#xff0c;从而帮助我们可以更好的利用Git的能力。本系列一共8篇文章&#xff0c;这是第一篇。原文&#xff1a;Creating the Perfect Commit in Git[1] Git中的提交可以是以下两种情况之一…

jenkins下载gitlab自动化用例并每日批跑

1.安装Jenkins ---待补充 2.安装用例执行节点&#xff08;虚拟机&#xff09; 用例执行的虚拟机&#xff0c;需要安装python环境与依赖包&#xff08;自动化脚本依赖包&#xff09;&#xff0c;需要申请外网权限&#xff08;安装python依赖需要外网&#xff09;。执行机需要挂…

四大技巧,教你如何加速手动UI测试

用户界面测试&#xff08;UI测试&#xff09;是软件开发过程中的一个重要组成部分。单元测试和集成测试可以确保代码正常运行&#xff0c;UI测试则帮助您确保用户在使用过程中获得最佳体验。这些测试有一个共同的挑战——创建和维护可能非常耗时&#xff0c;尤其是手动测试。 …

vscode配置远程linux开发环境

vscode配置远程linux开发环境 1. linux 要运行sshd服务2. 在vscode上安装Remote Development插件3. 配置远程linux主机的信息4. 远程连接linux 1. linux 要运行sshd服务 使用命令&#xff0c;查看 22端口是否被监听&#xff0c;这个端口是远程连接软件所用到的端口 netstat -…

mysql8.0版本降到5.7版本(下载配置mysql5.7压缩包版本)

目录 一、前言 二、官网下载与解压 三、配置环境变量 四、检查测试当前MySQL版本 五、获取资源 一、前言 在部署项目的时候&#xff0c;有时候8.0版本的MySQL就会报错&#xff0c;这个时候就要换MySQL的版本了&#xff0c;5.7的版本还是比较稳定的。 二、官网下载与解压…

短视频账号矩阵系统sign解密流程(开发)

PHP加密后直接用这个PHP解码如何解密&#xff1f; IOC 控制反转 把创建对象过程交给spring进行管理&#xff0c;降低耦合度 底层原理 xml解析、工厂模式、反射 过程&#xff1a; 使用xml创建对象 使用xml解析技术解析 通过反射创建对象 Class clazz Class.forName(解析出来…

Unity:Gizmos 菜单

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 Gizmos 菜单 Scene 视图和 Game 视图都有 Gizmos 菜单。 单击 Scene 视图或 Game 视图的工具栏中的 Gizmos 按钮&#xff0c;即可访问 Gizmos 菜单。 “场景”视图中的“辅助图标”…