判断字符串中是否包含另外一个字符串
该算法是根据String#contains方法的思想编写的,但在debug时,String源码并不是用的字符数组,所以我没有看出每一位的值,所以自己写了个基于字符数组的算法。思路如下:
1.将源字符串与子字符串都变为字符数组
2. 遍历源字符串,寻找第一个与子字符串的第一位相等的索引
3.如果第二步直接未找到,则不存在
4.如果找到,则根据找到的索引值,继续向后面比较,循环比较的次数就是子字符串的长度,当循环结束时,索引值也增加到了最大循环次数,则包含;否则,证明当前相等索引值不包含。
5.当第四步经过循环后,不包含时,则继续第一步,寻找下一个首字符相等的索引。
代码撸起
/**
*
* @param sourceStr 源字符串
* @param sourceStart 源字符串起始位置
* @param targetStr 目标字符串
* @param targetStart 目标字符串起始位置
* @return true/false
*/
private static boolean contains(String sourceStr,int sourceStart,String targetStr,int targetStart){
if(StringUtils.isBlank(sourceStr) || StringUtils.isBlank(targetStr)){
return false;
}
char[] source = sourceStr.toCharArray()