Wednesday, September 9, 2015

[Math] Roman to Integer

1. Example
Input is guaranteed to be within the range from 1 to 3999

s = "MDCC"=> 1700

s= "XXIV"=>24

s= ""XIX" => 19

s= "CM"=>900

I      V       X
1      5      10
X      L      C
10     50    100
C      D     M
100 500    1000

2. Implementation
Q1: check character and decide what value, what if something like IX
A1: whenever you are at unit 1,10,100 check to see if next are 5,10(for 1),50,100(for 10),,500,1000(for 100)


public int romanToInt(String s)
{

       

       // validate the input
       if (s== null || s.length() == 0)
            return 0;



       s = s.trim();
       if (s.length()==0)
            return 0;

     

       int res = 0;
       for (int i = 0 ; i < s.length(); i ++) 
       {
            char c= s.charAt(i);
            switch(c)
            {






                 case 'I':
                     if ( i+1 < s.length() &&( s.charAt(i+1) == 'V' || s.charAt(i+1)=='X') )
                     {
                        res-=1;
                     }
                     else
                        res+=1; 
                     
                     break;
                 case 'X':
                     if ( i+1 < s.length() &&( s.charAt(i+1)=='L' || s.charAt(i+1)=='C'  ) )
                        res-=10;
                     else 
                        res+= 10;
                     break;
                 case 'C':
                    if ( i < s.length() -1 && (s.charAt(i+1)=='D' || s.charAt(i+1)=='M') )
                    {
                        res -= 100;
                    }
                    else 
                    {
                        res += 100;
                    }
                    break;





                case 'L':
                    res += 50;
                    break;
                case 'D':
                    res += 500;
                    break;
                case 'M':
                    res += 1000;
                    break;
                default:
                    return 0;

            }

       }
}
3. Similar Ones (E)  String to Integer (M) Integer to Roman (M) Integer to Number

No comments:

Post a Comment