Write code to Counts how many times the substring appears in the larger string.
countMatches(null, *) = 0 countMatches("", *) = 0 countMatches("abba", null) = 0 countMatches("abba", "") = 0 countMatches("abba", "a") = 2 countMatches("abba", "ab") = 1 countMatches("abba", "xxx") = 0
public class Main { public static void main(String[] argv) { String str = "book2s.com"; String sub = "book2s.com"; System.out.println(countMatches(str, sub)); }//from w w w . j ava 2s . c o m /** * <p> * Counts how many times the substring appears in the larger string. * </p> * * <p> * A {@code null} or empty ("") String input returns {@code 0}. * </p> * * <pre> * countMatches(null, *) = 0 * countMatches("", *) = 0 * countMatches("abba", null) = 0 * countMatches("abba", "") = 0 * countMatches("abba", "a") = 2 * countMatches("abba", "ab") = 1 * countMatches("abba", "xxx") = 0 * </pre> * * @param str * the CharSequence to check, may be null * @param sub * the substring to count, may be null * @return the number of occurrences, 0 if either CharSequence is {@code null} */ public static int countMatches(CharSequence str, CharSequence sub) { if ((str == null || str.length() == 0) || (sub == null || sub.length() == 0)) { return 0; } int count = 0; int idx = 0; while ((idx = indexOf(str, sub, idx)) != -1) { count++; idx += sub.length(); } return count; } public static int indexOf(CharSequence cs, CharSequence searchChar, int start) { return cs.toString().indexOf(searchChar.toString(), start); } }