P11 (*) 游程编码改
来源:互联网 发布:手机直播系统源码 编辑:程序博客网 时间:2024/05/21 17:55
问题描述
在P10的算法实现中,若一个元素不连续重复,我们最终也转化为(N E)
的形式,即N
为1的特殊形式。 该题的要求是特殊处理这一情况,直接将元素复制到结果列表中。如
sash> (encode-modified '(a a a a b c c a a d e e e e))sash> ((4 a) b (2 c) (2 a) d (4 e))
解法
按照题目要求,我们只修改let
绑定的局部enc
,即可。这是封装抽象的好处,能让修改局部化,利于逻辑清晰和维护,对现实中的大项目尤甚。
递归实现
(define encode-modified (lambda (ls) (let ([p (pack ls)] [enc (lambda (sub) (if (null? (cdr sub)) (car sub) (list (length sub) (car sub))))]) (let f ([p p]) (cond [(null? p) '()] [else (cons (enc (car p)) (f (cdr p)))])))))
reduce实现
(define encode-modified(lambda (ls) (let ([p (pack ls)] [enc (lambda (sub) (if (null? (cdr sub)) (car sub) (list (length sub) (car sub))))]) (fold-right (lambda (e a) (cons (enc e) a)) '() p))))
map实现
(define encode-modified (lambda (ls) (let ([p (pack ls)] [enc (lambda (sub) (if (null? (cdr sub)) (car sub) (list (length sub) (car sub))))]) (map (lambda (e) (enc e)) p))))
1 0
- P11 (*) 游程编码改
- 游程编码
- 游程编码
- 游程编码
- 游程编码
- 游程编码!
- 游程编码
- 游程编码
- 游程长度编码
- 游程长度编码
- 游程编码之加密
- 游程长度编码
- 游程编码算法
- 1138 -- 游程编码
- 1315: 游程编码
- 1315:游程编码
- 游程编码和Huffman编码
- 游程编码之解码篇
- 用scrollview显示多数据
- SQL语句,建立索引和视图,接上文
- 初识C#
- SQLServer 维护脚本分享(09)相关文件读取
- tomcat编码格式与jsp编码格式不一致,导致页面标题乱码
- P11 (*) 游程编码改
- ubuntu下解决WebStorm找不到chromium路径
- 三层小总结
- 【GLSL教程】(五)卡通着色
- 从jdk源码角度理解jvm类加载机制
- 填充ListView(继承BaseAdapter)
- 数据结构实验之查找七:线性之哈希表 151 268
- Universal-Image-Loader
- 039_硬币问题(贪心)