Sunday, January 15, 2012

Wednesday, January 4, 2012

CodingBat Array-3

Some neat pieces of code:

seriesUp
public int[] seriesUp(int n) {
  int len=n*(n+1)/2, k=1,num=0;
  int[] result=new int[len];
  for (int i=0;i<n;i++){
    for (int j=0;j<k&&i+j<len;j++){
      result[num++]=j+1;
    }
    k++;
  }
  return result;
}


maxMirror
public int maxMirror(int[] nums) {
  int len=nums.length,count=0,max=0,k=0;
  for (int i=0;i<len;i++){
    count=0;
    for (int j=len-1;i+count<len&&j>-1;j--){
      if(nums[i+count]==nums[j]){
        count++;
      }
      else{
        if (count>0){
          max=Math.max(count,max);
          count=0;
        }
      }
    }
    max=Math.max(count,max);
  }
  return max;
}


countClumps

public int countClumps(int[] nums) {
  int len=nums.length,count=0,result=0;
  for (int i=0;i<len;i++){
    count=0;
    for (int j=i;j<len;j++){
      if (nums[i]==nums[j]){
        count++;
      }
    }
    if (count>1){
      result++;
      i+=count-2;
      count=0;
    }
  }
  return result;
}



Tuesday, January 3, 2012

CodingBat String-3 sumNumbers

It puzzled me a bit so I thought to share this...

public int sumNumbers(String str) {
  int len=str.length(),sum=0,count=0;
  boolean num=false;
  String tmp="";
  for (int i=0;i<len;i++){
    if (Character.isDigit(str.charAt(i))){
      num=false;
      tmp="";
      count=0;
      for (int j=i;j<len;j++){
        if (Character.isDigit(str.charAt(j))){
          count++;
          num=true;
          tmp+=str.charAt(j);
        }
        else{
          if (num) {
            break;
          }
        }
      }
      if (tmp.length()>0){
        i+=count;
        sum+=Integer.parseInt(tmp);
      }
    }
  }
  return sum;
}