字符串总结
1.什么是字符串
理解为字符数组
2.要不要使用库函数
题目关键的部分不要直接用库函数,库函数作为辅助。
了解库函数内部如何实现,分析其时间复杂度
3. 双指针法
例题1.https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html
2.https://programmercarl.com/%E5%89%91%E6%8C%87Offer05.%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC.html
若原本数组空间不够,预先给数组扩容到填充后的所需大小,然后在从后向前进行操作。
3.https://programmercarl.com/0027.%E7%A7%BB%E9%99%A4%E5%85%83%E7%B4%A0.html
好处:时间复杂度降低
不用新开一个数组来存储,可原地修改数组;
4.反转
1.https://programmercarl.com/0541.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2II.html
当需要一段一段去处理字符串的时候,i移动就具有了规律;在for循环的表达式上可以改变:
for(int i=0;i<s.size();i+=2*k)
综合考察字符串
先整体反转再局部反转
3.https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
5.kmp
二刷一定
今日练题
单调递增最长子序列
题目PTA | 程序设计类实验辅助教学平台 (pintia.cn)
动态规划:
int Maxadd(int n){
for(int i=1;i<n;i++){
for(int j=0;j<i;j++){
if(a[i]>a[j]){
b[i]=max(b[j]+1,b[i]);
}
}
}
int max=b[0];
for(int i=1;i<n;i++){
if(b[i]>max) max=b[i];
}
return max;
}