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;
}

Java Challenge - stringMatch - warm_up_2

Given 2 strings, a and b, return the number of the positions where they contain the same length 2 substring. So "xxcaazz" and "xxbaaz" yields 3, since the "xx", "aa", and "az" substrings appear in the same place in both strings.

stringMatch("xxcaazz", "xxbaaz") → 3
stringMatch("abc", "abc") → 2
stringMatch("abc", "axc") → 0
Hisoka:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
public int stringMatch(String a, String b) {
  int count = 0;
  int length = a.length() > b.length() ? b.length():a.length();
  for(int i=0; i<length-1; i++)
  {
    if(a.substring(i, i+2).equalsIgnoreCase(b.substring(i, i+2)))count++;
   }
  
   return count;
}

Hasil:

Codingbat:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
public int stringMatch(String a, String b) {
  // Figure which string is shorter.
  int len = Math.min(a.length(), b.length());
  int count = 0;
  
  // Look at both substrings starting at i
  for (int i=0; i<len-1; i++) {
    String aSub = a.substring(i, i+2);
    String bSub = b.substring(i, i+2);
    if (aSub.equals(bSub)) {  // Use .equals() with strings
      count++;
    }
  }

  return count;
}