代码随想录第八天|151.翻转字符串里的单词 卡码网:55.右旋转字符串 28. 实现 strStr() 459.重复的子字符串

本文主要是介绍代码随想录第八天|151.翻转字符串里的单词 卡码网:55.右旋转字符串 28. 实现 strStr() 459.重复的子字符串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

反转字符串的单词

思路:刷过稍微忘记

class Solution {
public://去除空格string remove(string s){//使用快慢指针int slow=0;int i=0;for(;i<s.size();i++){if(s[i]!=' '){if(slow!=0){s[slow++]=' ';}while(s[i]!=' '&&i<s.size()){s[slow++]=s[i++];}}}s.resize(slow);return s;}string reverseWords(string s) {int slow=0,i=0;//slow代表单词开头 i代表结尾s=remove(s);reverse(s.begin(),s.end());int start=0;for(int i=0;i<=s.size();i++){if (i == s.size() || s[i] == ' '){reverse(s.begin()+start,s.begin()+i);start=i+1;}}return s;}
};

55. 右旋字符串(第八期模拟笔试)

思路:做过

#include<bits/stdc++.h>
using namespace std;
int main(){int d;string s;cin>>d>>s;reverse(s.begin(),s.end());reverse(s.begin(),s.begin()+d);reverse(s.begin()+d,s.end());cout<<s;return 0;
}

28. 实现 strStr()

思路:经典KMP 需要二刷 比之前熟练一点

class Solution {
public://最长前缀和vector<int> Next(string needle){vector<int> next(needle.size());int j=0;//最长前缀和next[0]=0;for(int i=1;i<needle.size();i++){while(j>0&&needle[i]!=needle[j]){j=next[j-1];//回退到下一个最长前缀和 若是0直接退出}if(needle[i]==needle[j])j++;next[i]=j;}return next;}int strStr(string haystack, string needle) {vector<int> next=Next(needle);int i=0,j=0;while(i<haystack.size()&&j<needle.size()){if(haystack[i]==needle[j]){i++;j++;}else{//不匹配 j回退if(j==0){i++;}else{//到前缀的下一个匹配j=next[j-1];}}}if(j==needle.size())return i-j;return -1;}
};

459.重复的字符串

思路:暴力 遍历结尾作为字串 然后在主串检查

KMP 和移动搜索需要二刷

class Solution {
public:bool repeatedSubstringPattern(string s) {string t=s+s;//如果字符串是循环子串 中间一定会搜索到相同字符串t.erase(t.begin());t.erase(t.end()-1);if(t.find(s)!=string::npos)return true;return false;}
};

KMP利用next数组和重复子串的性质 :

数组长度-最大前缀和长度为一个周期 如果数组能整除这个周期说明是重复子串

这篇关于代码随想录第八天|151.翻转字符串里的单词 卡码网:55.右旋转字符串 28. 实现 strStr() 459.重复的子字符串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1140330

相关文章

C#高效实现在Word文档中自动化创建图表的可视化方案

《C#高效实现在Word文档中自动化创建图表的可视化方案》本文将深入探讨如何利用C#,结合一款功能强大的第三方库,实现在Word文档中自动化创建图表,为你的数据呈现和报告生成提供一套实用且高效的解决方... 目录Word文档图表自动化:为什么选择C#?从零开始:C#实现Word文档图表的基本步骤深度优化:C

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

nginx跨域访问配置的几种方法实现

《nginx跨域访问配置的几种方法实现》本文详细介绍了Nginx跨域配置方法,包括基本配置、只允许指定域名、携带Cookie的跨域、动态设置允许的Origin、支持不同路径的跨域控制、静态资源跨域以及... 目录一、基本跨域配置二、只允许指定域名跨域三、完整示例四、配置后重载 nginx五、注意事项六、支持

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

MySQL查看表的历史SQL的几种实现方法

《MySQL查看表的历史SQL的几种实现方法》:本文主要介绍多种查看MySQL表历史SQL的方法,包括通用查询日志、慢查询日志、performance_schema、binlog、第三方工具等,并... 目录mysql 查看某张表的历史SQL1.查看MySQL通用查询日志(需提前开启)2.查看慢查询日志3.

Java实现字符串大小写转换的常用方法

《Java实现字符串大小写转换的常用方法》在Java中,字符串大小写转换是文本处理的核心操作之一,Java提供了多种灵活的方式来实现大小写转换,适用于不同场景和需求,本文将全面解析大小写转换的各种方法... 目录前言核心转换方法1.String类的基础方法2. 考虑区域设置的转换3. 字符级别的转换高级转换

使用Python实现局域网远程监控电脑屏幕的方法

《使用Python实现局域网远程监控电脑屏幕的方法》文章介绍了两种使用Python在局域网内实现远程监控电脑屏幕的方法,方法一使用mss和socket,方法二使用PyAutoGUI和Flask,每种方... 目录方法一:使用mss和socket实现屏幕共享服务端(被监控端)客户端(监控端)方法二:使用PyA

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格

MyBatis-Plus逻辑删除实现过程

《MyBatis-Plus逻辑删除实现过程》本文介绍了MyBatis-Plus如何实现逻辑删除功能,包括自动填充字段、配置与实现步骤、常见应用场景,并展示了如何使用remove方法进行逻辑删除,逻辑删... 目录1. 逻辑删除的必要性编程1.1 逻辑删除的定义1.2 逻辑删php除的优点1.3 适用场景2.

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp