leetcode_c++:Integer to English Words(273)
2016-08-19 16:17
435 查看
Convert a non-negative integer to its english words representation. Given input is guaranteed to be less than 231 - 1.
For example,
123 -> “One Hundred Twenty Three”
12345 -> “Twelve Thousand Three Hundred Forty Five”
1234567 -> “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
http://blog.csdn.net/u012243115/article/details/48134075
For example,
123 -> “One Hundred Twenty Three”
12345 -> “Twelve Thousand Three Hundred Forty Five”
1234567 -> “One Million Two Hundred Thirty Four Thousand Five Hundred Sixty Seven”
http://blog.csdn.net/u012243115/article/details/48134075
class Solution { public: string helper(int num) { const static char* less_ten[] = { "", " One", " Two", " Three", " Four", " Five", " Six", " Seven", " Eight", " Nine" }; const static char* less_twenty[] = { " Ten", " Eleven", " Twelve", " Thirteen", " Fourteen", " Fifteen", " Sixteen", " Seventeen", " Eighteen", " Nineteen" }; const static char* less_hundred[] = { "", "", " Twenty", " Thirty", " Forty", " Fifty", " Sixty", " Seventy", " Eighty", " Ninety" }; string s; if (num != 0) { //get hundredth, tenth, and single digit int hundred = num / 100; num %= 100; int tenth = num / 10; int single = num % 10; if (hundred) s = s + less_ten[hundred] + " Hundred"; if (tenth) { if (tenth == 1) { //special handling, choose from less_twenty based on value of single s += less_twenty[single]; return s; } else s += less_hundred[tenth]; } if (single) s += less_ten[single]; } return s; } string numberToWords(int num) { const static char* unit[] = { "", " Thousand", " Million", " Billion", " Triliion" }; int parts[5] = {0}; for(int i = 0; i < 5; ++i) { parts[i] = num % 1000; num /= 1000; } string s; for(int i = 0; i < 5; ++i) { if(parts[i] == 0) continue; s = helper(parts[i]) + unit[i] + s; } s = s.size() ? s.substr(1) : "Zero";//substr(1)是为了去掉s首位的空格 return s; } };
相关文章推荐
- 阅读程序,写结果2
- c++学习4
- leetcode_c++:Shortest Palindrome(214)
- leetcode_c++:Compare Version Numbers(165)
- C语言基本教程 第8课: 指针
- C语言入门-第五周:作业01
- C++获取窗口坐标并移动窗口
- leetcode_c++:reverse words a string(151)
- 使用C语言操作Sqlite数据库
- VC++ 操作 word
- 349. Intersection of Two Arrays
- leetcode_c++:Word Ladder II(126)
- C++运算符重载等
- C语言小结4
- C++学习-类和对象
- C++ 字符串倒置
- 《C++Primer》读书笔记——第9章 顺序容器
- 协程(一)快速理解协程的定义和分类
- c++ 注册回调函数研究
- C++类和接口的设计原则探讨