找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 778|回复: 0
收起左侧

[资源分享] 1: Read Sum of Digits -> STL+Lambda || 列表推导

[复制链接]

19

主题

2

精华

83

积分

资深会员

Rank: 2

积分
83
发表于 10-3-2015 12:31 PM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

题目不难,可以用来练习stl和lambda
  1. #include <numeric>
  2. using namespace std;

  3. class Solution {
  4. public:
  5.         string readSum(string &s) {
  6.                 static const char* digit[] =  {"zero","one","two","three","four","five","six","seven","eight","nine"};
  7.                
  8.                 string t = to_string(accumulate(s.begin(), s.end(), int(0), [](int x,char c){ return x + c-'0'; }));
  9.                 return accumulate(t.begin(), t.end(), string(),
  10.                                   [=](const string& s, char c){
  11.                                       return s.empty() ? string(digit[c-'0']) : s + " " + digit[c-'0'];
  12.                                   });
  13.         }
  14. };
复制代码
用python的话可以写的更简洁且不失效率
  1. class Solution:
  2.     def readSum(self, n):
  3.             digits = ["zero","one","two","three","four","five","six","seven","eight","nine"]
  4.             return " ".join([digits[int(d)] for d in str(sum([int(c) for c in str(n)]))])
复制代码


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表