Lifion电面

总共45分钟 介绍了他所在手机组做的HR App
然后就是coding

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

Write a function that given a number, returns its roman numeral equivalent
68 => LXVIII
515 => DXV

4 => IIII
9 => VIIII

这个跟 Integer to Roman 很像

1 Like

对。。。
我当时用的while loop 一直减

面试官一直让我搞哥data structure来。。。搞不清状况

X老师有什么好的解法吗?

你的解法不行?贴下?

这是后来看网上的解法。。。 还能优化吗?

class Solution {
    public String intToRoman(int num) {
        String[] romans = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};

        int[] nums = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
        
        StringBuilder sb = new StringBuilder();
        
        for (int i = 0; i < nums.length; i++) {
            while (num >= nums[i]) {
                num -= nums[i];
                
                sb.append(romans[i]);
            }
        }
        
        return sb.toString();
    }
    
}

这个解法本身没问题。至于优化,关键是优化什么?
不觉得用什么data structure可以优化 runtime。
也许面试官考虑的是 ODD,code style 方面的。

早知道应该 问一下 谢谢老师哈

請問是海投嗎 還是內推呢?我找ADP員工他說Lifion沒內推系統

不是哦 猎头找的我 他们家后端都是Nodejs