A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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;
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马