Integer to Roman
Problem:
Given an integer, convert it to a Roman numeral.
Input is guaranteed to being within the range from 1 to 3999.
Ideas:
Mapping method--equal-length array
My Code:
Public classSolution { PublicString Inttoroman (intnum) { int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 }; String[] Numerals= {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" }; StringBuffer rst=NewStringBuffer (); intLen =values.length; for(inti = 0; i < Len; i++) { intCount = num/Values[i]; Num= num%Values[i]; for(intj = 0; J < Count; J + +) {rst.append (numerals[i]); } } returnrst.tostring (); }}View Code
Others code:
Public classSolution { PublicString Inttoroman (intnum) { if(Num <= 0) { return""; } int[] Nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; string[] Symbols= {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; StringBuilder Res=NewStringBuilder (); intDigit=0; while(num > 0) { intTimes = num/Nums[digit]; Num-= nums[digit] *Times ; for(; times > 0; times--) {res.append (symbols[digit]); } Digit++; } returnres.tostring (); }}View Code
The Learning Place:
- Variable name times remain
- The fundamental transformation is mapping, common mapping methods 1, Map 2, equal-length arrays
Integer to Roman