字符串
文章平均质量分 72
字符串
gyjllll
这个作者很懒,什么都没留下…
展开
-
字符串总结篇
甚至一些同学习惯于调用substr,split,reverse之类的库函数,却不知道其实现原理,也不知道其时间复杂度,这样实现出来的代码,如果在面试现场,面试官问:“分析其时间复杂度”的话,一定会一脸懵逼!中,一些同学可能为了处理逻辑:每隔2k个字符的前k的字符,写了一堆逻辑代码或者再搞一个计数器,来统计2k,再统计前k个字符。只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。中要求翻转字符串里的单词,这道题目可以说是综合考察了字符串的多种操作。原创 2023-12-06 10:19:14 · 373 阅读 · 0 评论 -
459. 重复的子字符串
给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。s = "abab"true可由子串 "ab" 重复两次构成。s = "aba"falsetrue可由子串 "abc" 重复四次构成。(或子串 "abcabc" 重复两次构成。原创 2023-12-06 09:45:10 · 858 阅读 · 0 评论 -
28. 找出字符串中第一个匹配项的下标
说到KMP,先说一下KMP这个名字是怎么来的,为什么叫做KMP呢。因为是由这三位学者发明的:Knuth,Morris和Pratt,所以取了三位学者名字的首字母。所以叫做KMP写过KMP的同学,一定都写过next数组,那么这个next数组究竟是个啥呢?next数组就是一个前缀表(prefix table)。前缀表有什么作用呢?前缀表是用来回退的,它记录了模式串与主串(文本串)不匹配的时候,模式串应该从哪里开始重新匹配。原创 2023-12-05 22:20:14 · 723 阅读 · 0 评论 -
151. 反转字符串中的单词(中等)
主要就是要手动添加一个空格,因为while里一个单词判断完会跳出while循环,再次执行for循环,这样快指针一定会比慢指针快,假如现在快指针索引的不是空格,那么就把慢指针索引的数更新,同时慢指针更新,然后继续遍历下一个单词。如果快指针索引是空格,说明这时至少有两个空格(因为刚执行完for循环,快指针更新了一次,没更新的时候刚从while循环跳出来,因此这两次都是空格),继续执行for循环,这样slow就原地不动了,直到下一个fast不是空格,再把这个slow补上空格,这样就只有一个空格。原创 2023-12-04 19:22:44 · 342 阅读 · 0 评论 -
541. 反转字符串 II
这道题最好不要去统计字符串里几个k,几个2k,比较繁琐,最容易的就是在for循环遍历的时候,索引i的更新方式为i+=2k,然后再去判断剩余字符的长度,写ifelse,注意到剩余字符大于等于k小于2k和每统计到2k个字符,这两种情况都是反转前k个字符,因此可以去用s.length()-i与k去比较,不用非得把n个2k都减掉去判断。,从字符串开头算起,每计数至。原创 2023-12-04 17:52:13 · 299 阅读 · 0 评论 -
344. 反转字符串
对于字符串,我们定义两个指针(也可以说是索引下标),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。原创 2023-12-04 16:26:40 · 374 阅读 · 0 评论