For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.
countHi:
public int countHi(String str) { if (str.length() < 2) return 0; if (str.substring(0, 2).equals("hi")) return 1 + countHi(str.substring(2)); return countHi(str.substring(1)); }
changeXY:
public String changeXY(String str) { if (str.length() == 0) return str; if (str.charAt(0) == 'x') return "y" + changeXY(str.substring(1)); return str.charAt(0) + changeXY(str.substring(1)); }
changePi:
public String changePi(String str) { if (str.length() < 2) return str; if (str.substring(0, 2).equals("pi")) return "3.14" + changePi(str.substring(2)); return str.charAt(0) + changePi(str.substring(1)); }
noX:
public String noX(String str) { if (str.length() == 0) return ""; if (str.charAt(0) == 'x') return noX(str.substring(1)); return str.charAt(0) + noX(str.substring(1)); }
array6:
public boolean array6(int[] nums, int index) { if (nums.length == 0) return false; if (index == nums.length - 1) return nums[index] == 6; if (nums[index] == 6) return true; return array6(nums, index + 1); }
array11:
public int array11(int[] nums, int index) { if (index == nums.length) return 0; if (nums[index] == 11) return 1 + array11(nums, index + 1); return array11(nums, index + 1); }
array220:
public boolean array220(int[] nums, int index) { if (nums.length < 2 || index == nums.length - 1) return false; if (nums[index + 1] == nums[index] * 10) return true; return array220(nums, index + 1); }
allStar:
public String allStar(String str) { if (str.length() <= 1) return str; return str.charAt(0) + "*" + allStar(str.substring(1)); }
pairStar:
public String pairStar(String str) { if (str.length() < 2) return str; if (str.charAt(0) == str.charAt(1)) return str.charAt(0) + "*" + pairStar(str.substring(1)); return str.charAt(0) + pairStar(str.substring(1)); }
endX:
public String endX(String str) { if (str.length() == 0) return str; if (str.charAt(0) == 'x') return endX(str.substring(1)) + "x"; return str.charAt(0) + endX(str.substring(1)); }
For further help with Coding Bat (Java), please check out my books. I am also available for tutoring.
A bit shorter
public int countHi(String str) {
if(str.length()==0) return 0;
if(str.startsWith(“hi”))return 1+countHi(str.substring(1));
return countHi(str.substring(1));
}
A bit shorter
public boolean array6(int[] nums, int index) {
if(index==nums.length) return false;
if(nums[index]==6) return true;
return array6(nums, index+1);
}
The shortest ever for noX:
public String noX(String str)
{
return str.replace(“x”, “”);
}
The recursion is done by the replace method. 🙂
This isn’t the point of that exercise as you are using an in-built method. Besides, the replace method is not implemented recursively. By looking for such shortcuts, you’re cheating yourself out of getting a proper grasp on programming fundamentals.