package liu.dh.algorithm1;
/**
*
*求大字符串是是否包含小字符串,不用indexOf方法
*不能用contains()方法因为底层使用的是indexOf方法
*/
public class Demo1不用indexOf方法求字符串包括 {
public static void main(String[] args) {
//验证
String string = "3433afaddfffffaaa4asdf457rt";
String string2 = "asdf";
boolean hasMin = hasMin(string, string2);
System.out.println(hasMin);
}
public static boolean hasMin(String bigger,String smaller){
//思路:使用charAt()方法将大字符串遍历;将遍历的每一个字符与小字符串的第一个字符串比较
//如果相等,调用subString()方法截取与小字符串等长的字符串,
//进行判断,如果长度不超过大字符串长度,字符串相等就返回TRUE
//满足相等的条件就返回true,其它全部返回false;
//获取长度
int length = bigger.length();
int length1 = smaller.length();
//对大字符串进行遍历,同时与小字符串的第一个字符进行比较
for(int i = 0;i<length;i++){
//如果相等就截取,并判断长度;
if (bigger.charAt(i)==smaller.charAt(0)) {
//索引加上小字符串的长度<=大字符的长度就截取
System.out.println(i);
int sum =i+length1;//为什么加上length:因为第索引7是第8个字符;所以length不用-1
if (sum <= length) {
//对截取进行判断:截取小字符串长度的字符
if (bigger.substring(i,sum).equals(smaller)) {
return true;
}
}
}
}
//如果没有一个相等就返回false
return false;
}
}
|
|