字符串

一、反转字符串

1:类似反转链表,双指针

2:k值反转:每隔 2k 个字符的前 k 个字符进行反转,双指针

 

二、替换数字

正则匹配,但要运用substring将需要的部分分出来

或是指针。对于线性数据结构,填充或者删除,后序处理会高效的多。

 

三、反转字符单词

需要删除多余空格,,然后反转

 

四、右旋字符串

整体反转,前部分反转,后部分反转

注意字符串和数组的区别,字符串无法修改其中的字符,但数组可以

 

五、找出字符串中第一个匹配项的下标

思想一:双指针

思想二:KMP(主要用在字符串匹配上),

next中的值代表着该子串的最长相等前后缀的长度,

因为数组是从0开始的,所以该值就指向了未匹配好的位置,
计算next数组时,若s[i]!==s[j],这说明不匹配,这个时候,j就要找到上一次匹配的位置,再判断匹不匹配,不匹配的话,再往前找,直到匹配或是j=0,
这个时候,j的位置代表了上一次匹配的位置,如果这个时候的s[i]===s[j],那么表示j还可以往后移,继续下次匹配,同时next[i]填入j的位置,表示能够匹配的上的长度;如果
s[i]!==s[j],就表示,j这个时候已经在起点位置了,next[i]的值得为起点位置即0,然后继续下次循环。

两个字符串的比较也同理。

六、重复的子字符串

字符匹配:两个s拼接为一个ss(形成环),掐头去尾,若能找到ss中存在s,就说明s可有其子串重复构成

posted @ 2024-03-09 18:31  林晚n  阅读(15)  评论(0)    收藏  举报