Ruby's Louvre

每天学习一点点算法

导航

由addClass衍生出来的字符串去重问题

现在先撇开性能不谈,就算是谈性能,也是把函数循环成千上万才看到几毫秒的差距,因此我才不管它呢。我首先考虑的是类库的大小,这就要求,不要才分膨胀其里的函数。

我在群里提出的问题是,要为一个className为"aaa eee bbb"的元素节点添加多两个类名,“aaa”,"ddd",如果让此实现尽可能的简单,不能用框架,不能用for循环。

经过一轮的跑题(主要如何用hash进行去重,总难免还是谈到性能上),最好得到两个比较好的方案:

方案2虽然精简,但还存在两个问题,1对b字母的区分,2不能移除空白,如碰到像 'a aa a-a a-b' 就无能为力了,希望高手能跟进。

方案3,感谢abcd友情提供:

var str= "aaa bbb eee aaa bbb kkk"; var reg = /(^|\s)(\S+)\s(?=(?:\S+\s)*\2(?:\s|$))/g; alert(str.replace(reg,"$1"));


下面测试运行框,大家可以把代码放到里面进行测试。

posted on 2011-01-27 21:46  司徒正美  阅读(2623)  评论(6编辑  收藏  举报