Integer to roman

Convert the integer to the roman number.

Example 1:

Input : n=58
Output: LVIII

Approach:

Java

public class IntegerToRoman {
    public static void main(String[] args) {
        int num = 58;
        String roman = intToRoman(num);
        System.out.println(roman);
    }

    // integer to roman
    private static String intToRoman(int num) {
        String[] thousands = { """M""MM""MMM" };
        String[] hundreds = { """C""CC""CCC""CD",
                 "D""DC""DCC""DCCC""CM" };
        String[] tens = { """X""XX""XXX""XL""L",
                 "LX""LXX""LXXX""XC" };
        String[] units = { """I""II""III""IV""V",
                 "VI""VII""VIII""IX" };

        String result = thousands[num / 1000] + 
        hundreds[(num % 1000) / 100] + tens[(num % 100) / 10
            + units[num % 10];

        return result;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;

//function to convert integer to 
//roman number
string intToRoman(int num)
 {
    string res="";
     while(num>0)
     {
        if(num>=1000)
        {
            int x=num/1000;
            for(int i=0;i<x;i++)
                 res+='M';
            num=num%1000;
        }
        else if(num>=900)
        {
           res+='C';
            res+='M';
            num=num%100;
        }
       else if(num>=500)
       {
           int x=num/100;
           res+='D';
           for(int i=6;i<=x;i++)
               res+='C';
           num=num%100;
       }
   else  if(num>=400)
    {
        res+='C';
        res+='D';
        num=num%100;
    }
        else  if(num>=100)
         {
             int x=num/100;
             for(int i=1;i<=x;i++)
                  res+='C';
            num=num%100;
         }
        else if(num>=90)
        {
            res+='X';
            res+='C';
            num=num%10;
        }
       else  if(num>=50)
        {
            int x=num/10;
            res+='L';
            for(int i=6;i<=x;i++)
                 res+='X';
           num=num%10;
        }
        else if(num>=40)
        {
            res+='X';
            res+='L';
            num=num%10;
        }
      else if(num>=10)
      {
          int x=num/10;
          for(int i=1;i<=x;i++)
                res+='X';
          num=num%10;
      }
     else if(num==9)
     {
         res+='I';
         res+='X';
         num=0;
     }
     else if(num>=5)
     {
         int x=num/5;
         res+='V';
         for(int i=6;i<=num;i++)
               res+='I';
         num=0;
     }
    else if(num==4)
    {
        res+='I';
        res+='V';
        num=0;
    }
    else 
    {
        for(int i=1;i<=num;i++)
              res+='I';
        num=0;
    }
    }
      return res;  
}
int main()
{
    int num=58;
    string roman=intToRoman(num);
    cout<<roman<<"\n";
    return 0;
}


No comments:

Post a Comment