字符串
1、异或运算符
1、这里可以用异或运算符来代替temp进行交换的操作
2、例子
①异或运算符
while(start<end){
ch[start] ^= ch[end];
ch[end] ^= ch[start];
ch[start] ^= ch[end];
start++;
end--;
}
②普通写法
while(start<end){
char temp = ch[start];
ch[start] = ch[end];
ch[end] = temp;
start++;
end--;
}
2、setCharAt方法和CharAt方法
1、charAt(xx)
1、就是切割xx脚标的字符串
2、setCharAt(int index ,char ch)
1、就是修改指定脚标的字符为ch
2、是输出全部,只相当于是修改
3、KMP算法
1、作用
1、就是字符串匹配的问题
2、例如给一个字符串str,再给一个目标字符串。求目标字符串在str字符串中的首个位置、或者是否匹配。
2、前缀表(是查目标字符串)
1、作用:就是如果第一次匹配失败,需要回退。这个表里记录着回退到哪一步。
2、怎么计算前缀表的内容:需要知道前缀和后缀
①前缀:就是包含字符串第一个字母,不包含字符串最后一个字母。
②后缀:包含字符串最后一个字母,不包含字符串第一个字母。
3、得到这个前缀表,表里有下标,去对应字符串的下标,就知道要回退到哪一步,进行就行查找了。
4、例子
①目标字符串的前后缀aabaaf

②字符串str:aabaabaaf

3、代码理解
1、求前缀表
①这里需要4个步骤
- 初始化
- 前后缀不相同
- 前后缀相同
- 更新next[]数组的值
②一般设置j为前缀末尾。i为后缀末尾。