Activity8C.java

public class Activity8C { public static void main(String[] args) { String[] tests = { "", "aaa", "ababa", "aaabbbbaaccccd", "abbbbbaaaaccccbb", "cddd" }; for (int i = 0; i < tests.length; i++) { System.out.println("testing iteration " + tests[i] + ": " + maxRepeatIterative(tests[i])); System.out.println("testing recursion " + tests[i] + ": " + maxRepeat(tests[i])); System.out.println("counting all repeats " + tests[i] + ": " + maxCount(tests[i])); } System.out.println("\nEnd of processing."); } public static int maxRepeatIterative(String s) { int current; int longest; current = 0; longest = 0; for (int i = 0; i < s.length(); i++) { if (i > 0 && s.charAt(i - 1) == s.charAt(i)) { // repeat current++; } else { // different current = 1; } if (current > longest) { longest = current; } } return longest; } public static int maxRepeatRecursive(String s, int current, char previous) { int longest; if (s.length() == 0) { longest = 0; } else { if (s.charAt(0) == previous) { current++; } else { current = 1; } longest = current; current = maxRepeatRecursive(s.substring(1), current, s.charAt(0)); if (current > longest) { longest = current; } } return longest; } public static int maxRepeat(String s) { if (s.length() == 0) { return 0; } else { return maxRepeatRecursive(s.substring(1), 1, s.charAt(0)); } } public static int maxCountRecursive(String s, int current, char checking) { int longest; if (s.length() == 0) { longest = 0; } else { if (s.charAt(0) == checking) { current++; longest = current; } else { // new character longest = maxCountRecursive(s.substring(1), 1, s.charAt(0)); } current = maxCountRecursive(s.substring(1), current, checking); if (current > longest) { longest = current; } } return longest; } public static int maxCount(String s) { if (s.length() == 0) { return 0; } else { return maxCountRecursive(s.substring(1), 1, s.charAt(0)); } } }