Monday, June 6, 2016

Java Challenge - factorial

Given n of 1 or more, return the factorial of n, which is n * (n-1) * (n-2) ... 1. Compute the result recursively (without loops).

factorial(1) → 1
factorial(2) → 2
factorial(3) → 6

Hisoka:
1
2
3
4
public int factorial(int n) {
  if(n == 1) return 1;
  return n*factorial(n-1);
}

Hasil:

Codingbat:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public int factorial(int n) {
  // Base case: if n is 1, we can return the answer directly
  if (n == 1) return 1;
  
  // Recursion: otherwise make a recursive call with n-1
  // (towards the base case), i.e. call factorial(n-1).
  // Assume the recursive call works correctly, and fix up
  // what it returns to make our result.
  return n * factorial(n-1);
}

Woooh...sama yaaak... :D

Sunday, June 5, 2016

Java Challenge - stringX - warm_up_2

Given a string, return a version where all the "x" have been removed. Except an "x" at the very start or end should not be removed.

stringX("xxHxix") → "xHix"
stringX("abxxxcd") → "abcd"
stringX("xabxxxcdx") → "xabcdx"

Hisoka:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
public String stringX(String str)
{
  if(str.length() > 1 && str.charAt(0) == 'x' && str.charAt(str.length()-1) == 'x')
   {
    return "x"+str.replace("x","")+"x";
   }else if(str.contains("x") && str.length()!=1)
   {
     return str.replace("x", "");
   }else
   {
    return str;
   }
}

Hasil:

Codingbat:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public String stringX(String str) {
  String result = "";
  for (int i=0; i<str.length(); i++) {
    // Only append the char if it is not the "x" case
    if (!(i > 0 && i < (str.length()-1) && str.substring(i, i+1).equals("x"))) {
      result = result + str.substring(i, i+1); // Could use str.charAt(i) here
    }
  }
  return result;
}