Erlang在列表中查找连续的相同元素

use*_*708 1 erlang list

我需要从LIST中找到连续的相同元素.

从任何位置开始

即[BCCDAB]预期结果[cc] [BCDCBA]预期结果[]

有什么建议吗?谢谢

Pas*_*cal 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).
Run Code Online (Sandbox Code Playgroud)

这将适用于您的示例,但如果连续元素超过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]
Run Code Online (Sandbox Code Playgroud)

我让你找到如何编码预期的行为.