**For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.**

**scoresSpecial:**

public int scoresSpecial(int[] a, int[] b) { return largest(a) + largest(b); } public int largest(int[] array) { int result = 0; for (int i = 0; i < array.length; i++) if (array[i] % 10 == 0 && array[i] > result) result = array[i]; return result; }

**sumHeights:**

public int sumHeights(int[] heights, int start, int end) { int sum = 0; for (int i = start; i < end; i++) sum += Math.abs(heights[i] - heights[i + 1]); return sum; }

**sumHeights2:**

public int sumHeights2(int[] heights, int start, int end) { int sum = 0; for (int i = start; i < end; i++) if (heights[i] < heights[i + 1]) sum += (2 * Math.abs(heights[i] - heights[i + 1])); else sum += Math.abs(heights[i] - heights[i + 1]); return sum; }

**bigHeights:**

public int bigHeights(int[] heights, int start, int end) { int count = 0; for (int i = start; i < end; i++) if (Math.abs(heights[i] - heights[i + 1]) >= 5) count++; return count; }

**userCompare:**

public int userCompare(String aName, int aId, String bName, int bId) { if (aName.compareTo(bName) < 0) return -1; if (aName.equals(bName)) { if (aId == bId) return 0; if (aId < bId) return -1; } return 1; }

**mergeTwo:**

public String[] mergeTwo(String[] a, String[] b, int n) { String[] result = new String[n]; int indexResult = 0; int indexA = 0; int indexB = 0; while (indexResult < n) if (a[indexA].compareTo(b[indexB]) < 0) result[indexResult++] = a[indexA++]; else if (a[indexA].compareTo(b[indexB]) > 0) result[indexResult++] = b[indexB++]; else { // identical strings result[indexResult++] = a[indexA++]; indexB++; } return result; }

**commonTwo:**

public int commonTwo(String[] a, String[] b) { int count = 0; String lastChecked = null; for (int i = 0; i < a.length; i++) if (!a[i].equals(lastChecked)) for (int j = 0; j < b.length; j++) if (a[i].equals(b[j])) { count++; lastChecked = a[i]; break; } return count; }

**For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.**

Matt M.You solution to commonTwo does multiple passes through the b array. The instructions say to limit to a single pass. Here is a single pass solution:

//Done in C#… but easy to convert

int ca = 0, cb = 0, sum = 0;

bool flag = true;

while (flag)

{

if (a[ca] == b[cb]) { ca++; cb++; sum++; }

else if (a[ca]

b[cb]) { cb++; }if (ca == a.Length || cb == b.Length) { flag = false; }}

return sum;

Matt M.The above code got fowled by the site’s Bolding mechanism. I changed a and b to m and n to fix it. The correct code should be:

int ca = 0, cb = 0, sum = 0;

bool flag = true;

while (flag)

{

if (m[ca] == n[cb]) { ca++; cb++; sum++; }

else if (m[ca] n[cb]) { cb++; }

if (ca == m.Length || cb == n.Length) { flag = false; }

}

return sum;

Matt M.Ahh the code still fowls — your editor has some serious flaws 🙂

See here for the correct code:

http://www.javaproblems.com/2013/11/java-ap-1-commontwo-codingbat-solution_18.html?showComment=1440960804261#c5485657438184916811