2014-12-16 3 views
0

문자열의 가능한 모든 하위 시퀀스를 출력하는 함수를 만들었습니다. 이제는 가장 일반적인 것을 인쇄하는 함수를 만들어야합니다. 내가 어디에서 시작할 수 있는지에 대한 아이디어. 완전히 코딩 된 기능을 시작할 곳을 요구하지 않습니다. 또한 서곡 기능 (베이스 포함) 만 사용하십시오.목록에서 가장 자주 발생하는 문자열 (요소)?

예를 들어, "jonjo"을 입력하면 내 기능은 ["jonjo","jonj","jon","jo","j","onjo","onj"...] 등을 반환합니다. 가장 일반적인 하위 문자열은 "jo"입니다.

가장 많이 발생하는 하위 문자열이 두 개 이상있는 경우에는 가장 긴 부분 문자열 만 인쇄됩니다. 여전히 동일하면 하위 문자열 중 하나만 있으면됩니다.

+2

모든 문자열에 대한 가장 일반적인 하위 문자열은 빈 문자열입니다 ... 좀 더 구체적이어야합니다. –

+0

어떨까요? 'abcabc'는 어떻습니까? 어느 것이 가장 일반적입니까? '알파벳'? 아니면 'ab'? 또는 'BC'? 아니면 그냥 'a'? –

+0

답변 만하면됩니다. – Arthur

답변

-2

난 당신이 기본 서곡에서 기본 Data.List

length :: [a] -> Int 

에서 기본 Data.List

group :: Eq a => [a] -> [[a]] 

에서

sort :: Ord a => [a] -> [a] 

를 살펴 보시기 바랍니다, 기본 Data.List

기본 서곡, 기본 Data.List

에서 D

maximum :: Ord a => [a] -> a 

정말 ONY 사용 전주곡 기능, 나는 당신이 직접 구현, 또는 그러한 트라이으로,이 효율적으로하기위한 자료 구조를 설계 제안 할 수있는 경우 .

5

"가장 빈번한 하위 문자열"의 첫 번째 문자가 하위 문자열 자체만큼 자주 나올 것이므로 명백한 바와 같이 문제는 가장 빈번한 문자를 찾는 것으로 줄일 수 있습니다.

+2

더욱 일반적인 것은 문자들 사이의 빈 문자열입니다 ... –

+1

전 진심으로 당신이 쓴 (문제는 잘 설명되지 않았습니다) ... 이것이 OP의 질문에 대한 코멘트가 아니어야합니까? 기본적으로 여기에 설명을 요구하고 있습니다. – Jubobs

+1

@Jubobs 문제가 너무 복잡하면 수용 가능한 대답 일 수 있습니다. –

관련 문제