logo

Pārveidojiet veselus skaitļus par romiešu cipariem Java

Tā ir problēma, kas bieži tiek uzdota intervijās ar tādiem vadošajiem IT uzņēmumiem kā Google, Amazon, TCS, un Accenture, uc Atrisinot problēmu, vēlas pārbaudīt intervējamā loģiskās spējas, kritisko domāšanu un problēmu risināšanas prasmi. Tāpēc šajā sadaļā mēs to apspriedīsim kā pārvērst veselu skaitli uz romiešu valodā Java ar dažādām pieejām un loģiku. Mēs arī izveidosim Java programmas tam pašam.

Pārveidojiet veselus skaitļus par romiešu cipariem Java

Romiešu cipari

Romiešu cipari ir simbolisks skaitļu attēlojums. Tos parasti izmanto pulksteņu ciparnīcās, mūzikas teorijā utt. Ir septiņi burti, ko izmanto, lai apzīmētu romiešu ciparus. Nākamajā tabulā ir parādīti romiešu cipari un atbilstošās decimāldaļas.

Raksturs Romiešu cipars
es 1
IN 5
X 10
L piecdesmit
C 100
D 500
M 1000

Romiešu cipariem ir šādas īpašības:

To parasti raksta no augstākās līdz zemākajai no kreisās puses uz labo, izņemot dažus īpašus gadījumus (kad kreisā rakstzīme ir mazāka par labo rakstzīmi). Piemēram, ar romiešu cipariem IV ir līdzvērtīgs 4. To nevar rakstīt kā IIII.

npm tīru kešatmiņu

Šādā gadījumā mēs atņemam kreisās rakstzīmes vērtību no labās rakstzīmes vērtības. Piemēram, IV būs 5-1=4. Tādā pašā veidā IX būs 10-1=9.

Apsveriet šādus gadījumus:

  • Romiešu cipars I var būt pirms V vai X, apzīmē atņemt vienu. Piemēram, IV (5-1) = 4 un 9 ir IX (10-1) = 9.
  • Romiešu ciparu X var ievietot pirms L vai C apzīmē atņemt desmit. Piemēram, XL (50-10) = 40 un XC (100-10) = 90.
  • Romiešu cipars C, kas novietots pirms D vai M, apzīmē atņemt simtu. Piemēram, CD (500-100) = 400 un CM (1000-100) = 900.

Pieeja

Vesela skaitļa pārvēršana romiešu ciparā ir vienkārša. Pirmkārt, izveidojiet divus masīvus, vienu romiešu ciparu vērtību glabāšanai un otru atbilstošo burtu glabāšanai. Izveidojiet StringBuilder klases gadījumu. Tagad salīdziniet veselo skaitli ar romiešu cipariem un rīkojieties šādi:

  • Ja ievades numurs ir >= lielākais romiešu cipars, pievienojiet to virknes veidotājam un samaziniet tā atbilstošo vērtību no ievades skaitļa.
  • Ja ievades numurs ir

StringBuilder būs atbilstošais romiešu cipars.

Izpratīsim iepriekš minētās darbības, izmantojot piemēru.

Piemērs

Pieņemsim, ka mums ir jāpārvērš 36 par romiešu cipariem. Salīdziniet veselo skaitli ar romiešu vērtībām šādi.

1000>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

900>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

500>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

400>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

100>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

90>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

50>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

40>36 = ​​jā, pārbaudiet ar nākamo romiešu ciparu.

10<36, add corresponding literal 'x' to result, result='X,' n='36-10=26</p'>

10<26, add corresponding literal 'x' to result, result='XX,' n='26-10=16</p'>

10<16, add corresponding literal 'x' to result, result='XXX,' n='16-10=6</p'>

10>6, pārbaudiet ar nākamo romiešu ciparu, rezultāts =XXX

9>6, pārbaudiet ar nākamo romiešu ciparu, rezultāts =XXX

5<6, add corresponding literal 'v' to result, result='XXXV,' n='6-5=1</p'>

5>1, pārbaudiet ar nākamo romiešu ciparu, rezultāts =XXXV

salas java

4>1, pārbaudiet ar nākamo romiešu ciparu, rezultāts =XXXV

1==1, rezultātam pievienojiet atbilstošo burtu “I”, rezultāts =XXXVI, N = 1-1=0

Rezultāts = XXXVI

Java programma veselu skaitļu konvertēšanai uz romiešu cipariem

IntegerToRoaman.java

 public class IntegerToRoman { public static void intToRoman(int num) { System.out.println(&apos;Integer: &apos; + num); int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] romanLetters = {&apos;M&apos;,&apos;CM&apos;,&apos;D&apos;,&apos;CD&apos;,&apos;C&apos;,&apos;XC&apos;,&apos;L&apos;,&apos;XL&apos;,&apos;X&apos;,&apos;IX&apos;,&apos;V&apos;,&apos;IV&apos;,&apos;I&apos;}; StringBuilder roman = new StringBuilder(); for(int i=0;i= values[i]) { num = num - values[i]; roman.append(romanLetters[i]); } } System.out.println(&apos;Corresponding Roman Numerals is: &apos; + roman.toString()); } public static void main(String args[]) { intToRoman(125); intToRoman(252); intToRoman(1000); intToRoman(1010); } } 

Izvade:

Pārveidojiet veselus skaitļus par romiešu cipariem Java

Vēl viens veids, kā drukāt romiešu ciparus, ir izveidot četrus vietvērtību masīvus. Piemēram, vienība, desmiti, simts un tūkstotis. Pēc tam aprēķina tā vietvērtību un pārvērš romiešu ciparos.

IntegerToRoman.java

 public class IntegerToRoman { //method to convert integer to roman //function that converts integer to roman public static String intToRoman(int number) { //creating array of place values String[] thousands = {&apos;&apos;, &apos;M&apos;, &apos;MM&apos;, &apos;MMM&apos;}; String[] hundreds = {&apos;&apos;, &apos;C&apos;, &apos;CC&apos;, &apos;CCC&apos;, &apos;CD&apos;, &apos;D&apos;, &apos;DC&apos;, &apos;DCC&apos;, &apos;DCCC&apos;, &apos;CM&apos;}; String[] tens = {&apos;&apos;, &apos;X&apos;, &apos;XX&apos;, &apos;XXX&apos;, &apos;XL&apos;, &apos;L&apos;, &apos;LX&apos;, &apos;LXX&apos;, &apos;LXXX&apos;, &apos;XC&apos;}; String[] units = {&apos;&apos;, &apos;I&apos;, &apos;II&apos;, &apos;III&apos;, &apos;IV&apos;, &apos;V&apos;, &apos;VI&apos;, &apos;VII&apos;, &apos;VIII&apos;, &apos;IX&apos;}; return thousands[number / 1000] + hundreds[(number % 1000) / 100] + tens[(number % 100) / 10] + units[number % 10]; } public static void main(String args[]) { //creating an array of integers to be convert into roman int[] numbers = {13, 21, 38, 50, 190, 141, 117, 120, 125, 138, 149, 6, 712, 181, 197, 918, 199, 1100, 1101, 1248, 1253}; for (int number : numbers) { System.out.printf(&apos;%4d -&gt; %8s
&apos;, number, intToRoman(number)); } } } 

Izvade:

Pārveidojiet veselus skaitļus par romiešu cipariem Java

Piezīme. Iepriekš minētā Java programma darbojas labi līdz pat 3999.

Drukājiet romiešu ciparus noteiktā diapazonā

DecimaltoRoman.java

 import java.util.LinkedHashMap; import java.util.Map; public class DecimaltoRoman { public static String RomanNumerals(int num) { LinkedHashMap romanNumerals = new LinkedHashMap(); //storing roman letters and corresponding decimal values in HashMap romanNumerals.put(&apos;M&apos;, 1000); romanNumerals.put(&apos;CM&apos;, 900); romanNumerals.put(&apos;D&apos;, 500); romanNumerals.put(&apos;CD&apos;, 400); romanNumerals.put(&apos;C&apos;, 100); romanNumerals.put(&apos;XC&apos;, 90); romanNumerals.put(&apos;L&apos;, 50); romanNumerals.put(&apos;XL&apos;, 40); romanNumerals.put(&apos;X&apos;, 10); romanNumerals.put(&apos;IX&apos;, 9); romanNumerals.put(&apos;V&apos;, 5); romanNumerals.put(&apos;IV&apos;, 4); rssomanNumerals.put(&apos;I&apos;, 1); //variable for string the result String result = &apos;&apos;; //loop iterate over Map for(Map.Entry entry : romanNumerals.entrySet()) { int matches = num/entry.getValue(); result = result+repeat(entry.getKey(), matches); num = num % entry.getValue(); } return result; } public static String repeat(String s, int n) { if(s == null) { return null; } final StringBuilder sb = new StringBuilder(); for(int i = 0; i <n; 1 200 i++) { sb.append(s); } converts into string return sb.tostring(); driver code public static void main(string args[]) prints roman numerals from to for (int i="1;i" '+romannumerals(i)); < pre> <p> <strong>Output:</strong> </p> <img src="//techcodeview.com/img/coding-problems/50/convert-integer-roman-numerals-java-4.webp" alt="Convert Integer to Roman Numerals in Java"> <p>Besides the above methods, there are various ways to convert integer to roman such as Using TreeMap, using switch case, etc. </p> <hr></n;>