罗马转整数
// @lc code=start
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function (s) {
symbols = {
I: 1,
V: 5,
X: 10,
L: 50,
C: 100,
D: 500,
M: 1000,
};
var result = 0;
for (var i = 0; i < s.length; i++) {
symbols[s[i]] < symbols[s[i + 1]]
? (result -= symbols[s[i]])
: (result += symbols[s[i]]);
}
return result;
};
思想:正常情况下后面的罗马字符要小于前面的罗马字符++,非正常情况下--
整数转罗马字符
const val = [1000,900,500,400,100,90,50,40,10,9,5,4,1]
const rom = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]
var intToRoman = function(N) {
let ans = ""
for (let i = 0; N; i++)
while (N >= val[i]) ans += rom[i], N -= val[i]
return ans
};
思想:找到距离N最近的并且比N小的数字,循环相减,循环添加值