344.反转字符串
双指针法-两指针指向头尾,交换字符,在移动指针。
541.反转字符串二
模拟反转规则(有点不好理解)
在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k 就可以了,然后判断是否需要有反转的区间。
剑指offer 05.替换空格
双指针法
统计空格个数,再扩充数组大小,从后往前遍历,替换空格。
151.反转字符串中的单词
思路:
- 移除多余的空格
快慢指针。去除字符串前面的空格,去除字符串中间多余的空格,去除末尾的空格,再重新设置大小。
- 将整个字符串反转
- 将每个单词反转
补充:erase()函数,erase(n)删除索引n处的元素,erase(n,m)删除从n开始的m个元素。
28.找出字符串中第一个匹配的子串
暴力匹配,让字符串needle与字符串haystack的所有长度为m的字符串匹配一次。
KMP看不懂
459.重复的子字符串
暴力解法:如果一个长度为n的字符串s可以由他的一个长度为n'的子串s'重复多次构成,那么:
- n一定是n'的倍数
- s'一定的s的前缀
- 对于任意的i∈[n',n),有s[i]=s[i-n']
也就是说,s中长度为n'的前缀就是s',并且在这之后的每一个位置上的字符s[i],都需要与他之前的第n'个字符s[i-n']相同。