qianzj 发表于 2015-3-4 08:45:23

xyp1964 发表于 2015-2-26 20:33 static/image/common/back.gif


厉害,与众不同               

llsheng_73 发表于 2015-3-12 03:08:12

鱼与熊掌 发表于 2015-2-25 18:58 static/image/common/back.gif


(defun cx-lst-delsame(lst fuzz / runlst)
(while(setq runlst(cons(car lst)runlst)
              lst(vl-remove-if'(lambda(x)(equal x(car lst)fuzz))(cdr lst))))
(reverse runlst)
)

鱼与熊掌 发表于 2015-3-12 15:32:44

llsheng_73 发表于 2015-3-12 03:08 static/image/common/back.gif


bucuo不错.

softbird 发表于 2019-5-28 16:47:51

请教各位大师如何得到("AL1" "AL1" "AL1" "AL2" "AL2""AL2" )
即反向操作留下重复的?

1291500406 发表于 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判断一下,就可以了。

highflybird 发表于 2019-5-28 18:55:24

本帖最后由 highflybird 于 2019-5-28 19:16 编辑

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

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


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


页: 1 [2]
查看完整版本: 如何去掉重复的字符串,并且排序