我需要从LIST中找到连续的相同元素。
从任何职位开始
即[B C C D A B]预期结果[c c] [B C D C B A]预期结果[]
有什么建议吗?感谢
答案 0 :(得分:5)
extractcc(L) -> extractcc(L,[]).
etractcc([],R) -> lists:reverse(R);
extractcc([H,H|T],R) -> extactcc(T,[H,H|R]);
extractcc([_H|T],R) -> extractcc(T,R).
这适用于您的示例,但如果连续元素超过2个则会产生奇怪的行为。这里是一个用shell编写的例子:
1> Ex = fun Ex([],R) -> lists:reverse(R);
1> Ex([H,H|T],R) -> Ex(T,[H,H|R]);
1> Ex([_H|T],R) -> Ex(T,R) end.
#Fun<erl_eval.36.90072148>
2> E = fun(L) -> Ex(L,[]) end.
#Fun<erl_eval.6.90072148>
3> E([1,2,3,3,4,3]).
[3,3]
4> E([1,2,1,2,1]).
[]
5> E([1,2,2,2,3]).
[2,2]
6> E([1,2,2,2,2,3]).
[2,2,2,2]
我让你找到如何编码预期的行为。