I am new to Java, and I’m trying to figure out how to count Characters in the given string and threat a combination of two characters "eu"
as a single character, and still count all other characters as one character.
And I want to do that using recursion.
Consider the following example.
Input:
JavaScript
x
"geugeu"
Desired output:
JavaScript
4 // g + eu + g + eu = 4
Current output:
JavaScript
2
I’ve been trying a lot and still can’t seem to figure out how to implement it correctly.
My code:
JavaScript
public static int recursionCount(String str) {
if (str.length() == 1) {
return 0;
}
else {
String ch = str.substring(0, 2);
if (ch.equals("eu") {
return 1 + recursionCount(str.substring(1));
}
else {
return recursionCount(str.substring(1));
}
}
}
Advertisement
Answer
OP wants to count all characters in a string but adjacent characters “ae”, “oe”, “ue”, and “eu” should be considered a single character and counted only once.
Below code does that:
JavaScript
public static int recursionCount(String str) {
int n;
n = str.length();
if(n <= 1) {
return n; // return 1 if one character left or 0 if empty string.
}
else {
String ch = str.substring(0, 2);
if(ch.equals("ae") || ch.equals("oe") || ch.equals("ue") || ch.equals("eu")) {
// consider as one character and skip next character
return 1 + recursionCount(str.substring(2));
}
else {
// don't skip next character
return 1 + recursionCount(str.substring(1));
}
}
}