明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: hrbustmqc

[提问] 如何去掉重复的字符串,并且排序

[复制链接]
发表于 2015-3-4 08:45:23 | 显示全部楼层
xyp1964 发表于 2015-2-26 20:33

厉害,与众不同               
发表于 2015-3-12 03:08:12 | 显示全部楼层
鱼与熊掌 发表于 2015-2-25 18:58

  1. (defun cx-lst-delsame(lst fuzz / runlst)
  2.   (while(setq runlst(cons(car lst)runlst)
  3.               lst(vl-remove-if'(lambda(x)(equal x(car lst)fuzz))(cdr lst))))
  4.   (reverse runlst)
  5. )
发表于 2015-3-12 15:32:44 | 显示全部楼层
llsheng_73 发表于 2015-3-12 03:08

bucuo  不错.
发表于 2019-5-28 16:47:51 | 显示全部楼层
请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2"  "AL2" )
即反向操作留下重复的?
发表于 2019-5-28 17:39:02 | 显示全部楼层
softbird 发表于 2019-5-28 16:47
请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2"  "AL2" )
即反向操作留下重复的?

倒立着写代码
发表于 2019-5-28 18:32:24 | 显示全部楼层
softbird 发表于 2019-5-28 16:47
请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2"  "AL2" )
即反向操作留下重复的?

准备两个表,一个是重复的,一个是不重复的。用member判断一下,就可以了。

点评

赞一个  发表于 2019-5-29 12:25
回复 支持 1 反对 0

使用道具 举报

发表于 2019-5-28 18:55:24 | 显示全部楼层
本帖最后由 highflybird 于 2019-5-28 19:16 编辑

提供一个简单的函数,不希望用member函数,对大数据的有可能提高效率

  1. (defun RemDupAndSort (lst / l a)
  2.   (foreach n (vl-sort lst '>)                ;这个地方的大于函数可以替换成你需要的函数
  3.     (if        (= a n)                                ;这个地方的相等比较可以替换成你需要的函数
  4.       l
  5.       (setq a n l (cons n l))
  6.     )
  7.   )
  8. )


在要求效率的场合,要慎用member, 对上面的函数来说,如果用member。对上面的这个歌函数来说,时间可能是O(n^2),而用foreach 函数,不过是排序  的时间加O(n)时间,总的来说还是O(log(n)).
各位有兴趣的话,不妨自我测试一下。


点评

赞一个  发表于 2019-5-29 12:23
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-19 01:17 , Processed in 0.275567 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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