字符串
empty__barrel
这个作者很懒,什么都没留下…
展开
-
KMP算法易理解
next 数组 下标代表:第几个字符比较失败。next数组内的值代表:比较失败的字符(下标对应的字符)应与第几个字符进行比较。所以这个值就是最长字符串前缀的长度+1。寻找从开头到失败位置的公共前后缀。最长前缀长度为3、最长后缀长度为3,那么这个失败的值应于下标为3的字符重新匹配。失败位置前的公共前后缀有多长,则next数组内的值就为此值+1。不过next【0】,next【1】的公共前后缀有多长,则next数组内的值就为此值,不用加1.要找到一串与T【j-1】前面一串相匹配,同时按图可知:此时原创 2022-02-26 15:59:43 · 277 阅读 · 0 评论 -
字符串总结
题目:力扣:344.反转字符串通过下标反转字符串力扣:541.反转字符串||起点向后看有没有 k 个字符,没有则直接翻转到末尾然后退出,有则翻转 k 个,然后到 2k 的位置,没有则退出。力扣:剑指Offer 05.替换空格在原空间上拓展,准备好储存整个字符串的空间,然后按原字符串从后往前填入,遇到空格填入%20即可。从前面填入:不需要挪动后面的元素,直接填入即可。从后面填入:需要挪动后面的元素。力扣:151.翻转字符串里的单词①:删除多余空格(元素):双指针法②:先整体翻转,然后按单原创 2022-02-25 21:15:30 · 50 阅读 · 0 评论 -
力扣:459.重复的子字符串
力扣:459.重复的子字符串代码随想录题目:给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。思路:代码:在这里插入代码片原创 2022-02-25 14:57:30 · 164 阅读 · 0 评论 -
力扣:28. 实现 strStr()
https://leetcode-cn.com/problems/implement-strstr/代码随想录题目:实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。思路:代码:在这里插入代码片...原创 2022-02-25 14:54:17 · 170 阅读 · 0 评论 -
力扣:剑指Offer58-II.左旋转字符串
力扣:剑指Offer58-II.左旋转字符串题目:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。思路:单纯二重翻转先整体翻转,然后将字符串分为两部分,先翻转前部分再翻转后部分(都一样其实)。代码:class Solution {public: string reverseLeftWords(string s, int n) {原创 2022-02-16 21:45:51 · 165 阅读 · 0 评论 -
力扣:151.翻转字符串里的单词
力扣:151.翻转字符串里的单词题目:给你一个字符串 s ,逐个翻转字符串中的所有 单词 。单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。翻转后的字符串中不应包含额外的空格。整体思路分三步:一:移除多余空格(因为题目条件:字符串之间只能用一个空格连接)二:将整个字符串反转三:将每个单词反转解原创 2022-02-16 20:47:09 · 134 阅读 · 0 评论 -
力扣:剑指Offer 05.替换空格
力扣:剑指Offer 05.替换空格题目:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。解析:首先扩充数组到满足结果的数组,然后使用双指针法从后往前替换元素。替换元素思路:因为是从后往前替换元素,就想象原数组当前位置的值以及结果数组对应位置的值,问题迎刃而解:当数组元素不为空格时,赋值到相应位置即可,当元素为空格时由相应位置连续从后往前赋值02%。代码:class Solution {public: string replaceSpace(string s) {原创 2022-02-16 19:34:20 · 127 阅读 · 0 评论 -
力扣:541.反转字符串||
力扣:541.反转字符串||题目:给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。解析:表示出起始位置,然后查找范围内元素个数与 k 进行比较进而按题意分情况书写。代码:class Solution {public: string reverseStr(string s, int原创 2022-02-16 18:26:53 · 624 阅读 · 0 评论 -
力扣:344.反转字符串
力扣:344.反转字符串题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。解析:vector即数组,数组始末值置换。重点:什么时候停止置换,当n个数为偶数到中间左边或右边停止(n/2或者(n/2)+1,右边会多进行一次置换),当n为奇数到中间左边或者中间值(n/2 或者(n/2)+1,中间会多进行一次置换)。总的来说的中间左边即 n/2 的位置。代码:cla原创 2022-02-16 17:36:06 · 171 阅读 · 0 评论