String13 String12 Integer<->Roman Easy&Medium

来源:互联网 发布:东方红大数据 编辑:程序博客网 时间:2024/06/13 10:44

Pre-defined Methods:

  • Int[] to Char[]: Integer.toString(num).toCharArray();

Logic Flaw

  • num/1 > 0 can be num>0
  • num %= 1 never been used
    *

Thoughts

  • 总是觉得懒惰的罗列方法更简单,但写起来发现重复的太多,还是通用方法比较好。intToArray()方法写了好多遍,后来还是觉得直接变成string省事很多。

思路总结

  • 先写的easy的RomanToInteger,
    1. 发现只需要从左到右翻译成int就行,
    2. 稍加注意减法部分就行了,而减法只有一种情况就是9,并且左边只能有一位数,因此只需要比较当前位置和后面位置的代表数字的大小即可判断
    3. 对于index和index+1的末位敏感已经很自然,一次写对
  • 后写的medium的IntegerToRoman
    1. 第一反应就是分割,不同的字母对应不同的int算出来,千位数百位数十位数个位数的分割
    2. 分割的部分变成了helper
    3. 先写的intToArray,对于它奋斗了好几个版本,后来发现翻译成string再到char[]再到int[]最方便
    4. 有注意char和int互换时候unicode和ASCII值的不同
    5. 再写的主程序,千位数。写到百位数的时候写那个intToString helper method
    6. 本来想直接swith罗列,之前刚用了switch,后来发现很罗嗦,于是建立了两个arguments和rule,这样百位十位个位都可以一次搞定了
    7. 弄好了rule[]就用switch遍历了1-9,其实”945else”更方便,于是我后来又写了intToStringByDigit()代码量确实少了一些
    8. FLAW: 其实这时候应该想到如果罗列,可以用string array直接罗列9个,并不多,而三种位数只是9×3的数组,对于decrete answers还是比较方便的。以后会写。
    9. 最后订正了个位数不需要num%1的小错误
0 0
原创粉丝点击