Sunday, September 8, 2013

Program to convert Integer to Roman literals form.(Only applicable for 1 to 1000)

Algorithm:
  1. Make a Tree map of basic elements which ll store Roman literals corresponding to Basic elements like 1 ,4,5,9,10,40,50,90,100 and so on..
  2. Get floor value for input  from map and print corresponding roman value.
  3. Subtract floor value from input value and do step 2 and step 3 until input value > 0
Source Code:
package com.learning;

import java.util.Scanner;
import java.util.TreeMap;

public class IntToRomanConversion {

 private static Scanner s;

 /**
  * @param args
  */
 public static void main(String[] args) {
  System.out.println("Enter the No to Convert :");
        s = new Scanner(System.in);
        int num = s.nextInt();
  converter(num);
  
 }

 // Method for converting Decimal to Roman
 
    static void converter(int input){
 
 
         TreeMap basicElement = new TreeMap();
          
          basicElement.put(1,"I");
          basicElement.put(4,"IV");
          basicElement.put(5,"V");
          basicElement.put(9, "IX");
          basicElement.put(10,"X");
          basicElement.put(40, "XL");
          basicElement.put(50,"L");
          basicElement.put(90, "XC");
          basicElement.put(100,"C");
          basicElement.put(400, "CD");
          basicElement.put(500,"D");
          basicElement.put(900, "CM");
          basicElement.put(1000,"M");
          
          while(input>0){    
           Integer lower=basicElement.floorKey(input);
           System.out.print(basicElement.get(lower));
              input=input-lower;
          }      
     } 
}

Sample Input:
Enter the No to Convert :
123
Sample Output: 
CXXIII

Saturday, September 7, 2013

Dynamic Programming: Finding Largest Integer Sequence.

Check is given BST balanced or not.

Algorithm:

  1. Recursively find max height and min height of tree.
  2. Subtract max height-min height.
  3. If result is 0 or 1 then tree is balanced else not.
Source Code:(Java)
package com.tree.exercise;

public class CheckTreeBalanced {

 
 private static int  findMaxHeight(Node root){
  
  if(root==null){
   return 0;
  }
  else
  {
   return 1 + Math.max(findMaxHeight(root.lChild), findMaxHeight(root.rChild));
  }
  
 }
 
private static int  findMinHeight(Node root){
  
  if(root==null){
   return 0;
  }
  else
  {
   return 1 + Math.min(findMaxHeight(root.lChild), findMaxHeight(root.rChild));
  }
  
 }

public static boolean isBalancedTree(Node root){
  System.out.println(findMaxHeight(root));
  System.out.println(findMinHeight(root));
 if(Math.abs(findMaxHeight(root)-findMinHeight(root)) <= 1)
  return true;
 else
  return false;
}

public static void main(String args[]){
 
 Tree newTree = new Tree();
 int[] inputValue = new int[]{5,2,3,6,8,7,1,9};
  for(int i=0;i< inputValue.length;i++){
    newTree.insert(inputValue[i]);
  }
 
 System.out.println(isBalancedTree(newTree.root));
}

}


Monday, August 5, 2013

Making Larger number from Given Array of Integer.

Ques: You have given an array of integers, using that form largest Number Possible.
Algorithm:

Source Code:(In java)
package com.array.exercise;

import java.util.Arrays;
import java.util.Comparator;

class MyCompare implements Comparator{

 public int compare(Integer i1,Integer i2){  
  String x =Integer.toString(i1);
  String y =Integer.toString(i2);
  
  String xy= x.concat(y);
  String yx= y.concat(x);
  return Integer.valueOf(xy)-Integer.valueOf(yx) > 0 ? 0:1;
 
 }
 
}
public class MakeBiggerNumber { 
 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
 
 
   Integer[] input = new Integer[]{54,546,548,60,77};
 
    MyCompare mc = new MyCompare();
    Arrays.sort(input,mc);
 
     for (int i = 0; i < input.length; i++) {
  System.out.print(input[i]);
 }
 }

}

Sunday, February 17, 2013

Printing Array of 0,1s in a fibonacci sequence



Thursday, March 29, 2012

Print Character Repetition In SameArray


Q. Program for any given string a   aaaabbbbcc, convert the given string in to a4b4c2 without using extra memory. ( Note that every character appears more than once in input string and the repeated characters are contiguous)

Source Code:
import java.util.Scanner;

public class PrintArraywithRepetation {

    /**
     * @param args
     * @author chandan
     * Given String aaaaabbbccccaaad print as a5b3c4a3d1 (Inplace without using Extra array)
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Scanner s = new Scanner(System.in);
       
        String input = s.next();

         int count=1;
        
        for(int i=0 ;i < input.length();i++){
  
            if(i < input.length()-1){
                if(input.charAt(i)!=input.charAt(i+1)){
                    System.out.print(input.charAt(i));
                    System.out.print(count);
                    count=1;
                }
                else
                    count++;
               
            }
            else if(i==input.length())
            {
                if(input.charAt(i)!=input.charAt(i-1)){
                    System.out.print(input.charAt(i));
                    System.out.print(count);
                    count=1;
                    }
                    else
                        count++;
               
            }
            else {
               
                System.out.print(input.charAt(i));
                 System.out.print(count);
                 count++;
            }
           
        }
   
    }

}
Note : Suggestion  are always welcome for better way to implement.



Anagram Checking


Anagram : WAP to Check 2nd String is anagram of Given String or Not.(Amazon FAQ)
Solution:

import java.util.HashSet;
import java.util.Scanner;

public class AnagramChecking {

 /**
  * @param args
  * @author mchandan
  * Program to check  String is Anagram or not i.e string2 is anagram of string1.
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Scanner s = new Scanner(System.in);
  System.out.print("Enter The Original String :");
  String str1 =s.next();
  System.out.print("Enter String to be matched as Anagram:");
  String str2 =s.next();
 
  HashSet h = new HashSet();
  for(int i=0;i < str1.length();i++)
  {
   h.add(str1.charAt(i));
  }
        /
  
  for(int i=0;i < str2.length();i++){< p="">
 
   if(!h.contains(str2.charAt(i)))
   {
    System.out.println("Not Anagram");
    System.exit(0);
   }
  
   }
  
           if(str2.length()==h.size())
            System.out.println("Anagram");
           else
            System.out.println("Not Anagram");
 }
 
 
}