zyj19831206 发表于 2019-9-23 16:13 细节我没看,应该有差别,这个可以查到。用and和or、not这些是写python用多了一时半会没想起来要改一下导致的,python确实还是方便,有时候先用python打个草稿再改成C++或者Fortran,经常串台。 |
卡开发发 发表于 2019-9-23 16:11 皮毛,谦虚了,是不是有时候编译起来,C++14和C++17也有差距? |
本帖最后由 卡开发发 于 2019-9-23 16:13 编辑 zyj19831206 发表于 2019-9-23 15:51 只是都学过,都比较皮毛,所以你仔细看,不管用哪个我用的方法其实没啥差别。我猜C++掌握的好的人写出来的代码肯定比我这边放的更流畅,建议精通一个比较好。 这个问题我想是not和and这些在你的vs上不支持,试试看: "not" => "!" "and" => "&&" "or" => "||"那个提示数字过长部分后面最好直接return,这个问题是当时传完了才发现的。 |
本帖最后由 卡开发发 于 2019-9-22 21:05 编辑 zyj19831206 发表于 2019-9-21 16:59 其实也没多复杂,注释懒得写了,有啥欠考虑的导致bug我也不知道了,自行修改。 1、就把数组三位一拆,挨个加thousand, million, billion。 2、三位当中再划分一次,100那个位置单独一个数,后面可能是一位也可能是两位。原则上这里看情况应该补个and,他们找的代码都没提到这事情。 3、按照上面例子来说,存了0~20和整10位的,这个也不是唯一做法。 4、写程序还是多写多想多看,除了学习别人好的风格,自己也得多思考。 |
zyj19831206 发表于 2019-9-21 16:59 差不多就是你这个代码的意思啊 保存一个数组零到十九,判断是否小于20: 小于20,unit[num]直接就是英语了 大于20,ten[num的十位数]+unit[num的个位数] 百位一样操作组合起来 然后每3位加上thousand,million, billion 我觉得这个代码已经把意思写的很清楚了,好好读读代码把 debug的话不如说说哪里没有跑通? |
本帖最后由 zyj19831206 于 2019-9-21 17:00 编辑 DoubeeTwT 发表于 2019-9-21 14:44 兄弟,你说的还是有点含糊,能否写一个伪代码,我在leetcode搜索了一段本题代码,总是运行不过去: class Solution { public: string numberToWords(int num, bool prependSpace = false) { static const string unit[] = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" }; static const string ten[] = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" }; string ret = ""; if (prependSpace && num != 0) { ret += " "; } if (num == 0 && !prependSpace) { ret += "Zero"; } else if (num < 20) { ret += unit[num]; } else if (num < 100) { ret += ten[num / 10] + numberToWords(num % 10, true); } else if (num < 1000) { ret += numberToWords(num / 100) + " Hundred" + numberToWords(num % 100, true); } else if (num < 1000000) { ret += numberToWords(num / 1000) + " Thousand" + numberToWords(num % 1000, true); } else if (num < 1000000000) { ret += numberToWords(num / 1000000) + " Million" + numberToWords(num % 1000000, true); } else { ret += numberToWords(num / 1000000000) + " Billion" + numberToWords(num % 1000000000, true); } return ret; } }; |
从末尾向前3个3个一拆分,每三个数用一个function转化为几百几十几,三个三个之间再加上thousand, million ,billion |
参与人数Participants 1 | eV +1 | 收起 理由Reason |
---|---|---|
我本是个娃娃 | + 1 | 我也是这么想的(滑稽) |
zyj19831206 发表于 2019-9-21 10:47 程序员用来刷面试题的,我用来抄代码的 |
highlight 发表于 2019-9-21 10:34 leetcode到底是个什么网站? |
我觉得你这些题咋看着这么像 leetcode 呢 https://leetcode.com/problems/integer-to-english-words/ 其实 discuss 里有参考答案的 |
手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图
GMT+8, 2024-11-23 21:51 , Processed in 0.181133 second(s), 27 queries , Gzip On.