//思路:先查找第一个,若是不匹配直接结束;若是匹配,就依次判断后面的是否都匹配,不匹配直接结束 public class StringContains { // container是否包含child public static boolean str1ContainsStr2(String container, String child) { if (container.length() < child.length()) { return false; } int maxLength = container.length(); char first = child.charAt(0); int i = -1; while (++i < maxLength) { // 先找第一个元素是否能找到 if (first == container.charAt(i)) { // 找到第一个元素再去匹配后面的元素 if (matchStr(container.substring(i), child)) { return true; } } } return false; } // max是否包含min public static boolean matchStr(String max, String min) { if (max.length() < min.length()) { return false; } int i = -1; int minLength = min.length(); while (++i < minLength) { // 对应位置的元素是否都相等 if (min.charAt(i) != max.charAt(i)) { return false; } } return true; } public static void main(String[] args) { String str1 = "abcdefghijklmn"; String str2 = "fghijklmn"; String str3 = "fgj"; String str4 = "agh"; System.out.println(str1ContainsStr2(str1, str2)); } }