Tuesday, June 14, 2016

countHi - Recursive

Given a string, compute recursively (no loops) the number of times lowercase "hi" appears in the string.

countHi("xxhixx") → 1
countHi("xhixhix") → 2
countHi("hi") → 1

C# :
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
  public static int countHi(String str)
        { 
            //stop condition
            if (str.Length < 2) return 0;

            //Process
            int index = str.IndexOf("hi");
            if (index < 0) return 0;
            return 1 + countHi(str.Substring(index + 1, str.Length - (1 + index)));
           
        }

Result :

CountX - Recursive

Given a string, compute recursively (no loops) the number of lowercase 'x' chars in the string.

countX("xxhixx") → 4
countX("xhixhix") → 3
countX("hi") → 0

Hisoka's Jutsu :
1
2
3
4
5
public int countX(String str) {
  if (str.length() == 0) return 0;
 if(str.charAt(str.length()-1) == 'x') return 1+countX(str.substring(0, str.length()-1));
 return countX(str.substring(0, str.length()-1));
}

Output :
Ooowh... btw... if we want to write countX in C#, it will gonna be like this :
1
2
3
4
5
6
7
  public static int countX(String str)
        {
            //stop condition
            if (str.Length == 0) return 0;
            if (str[(str.Length - 1)] == 'x') return 1 + countX(str.Substring(0, str.Length - 1));
            return countX(str.Substring(0, str.Length - 1));
        }
The output is same, you can check it here