2012-05-16 3 views
1

각 문자열이 두 개의 하위 문자열로 구성된 문자열 배열을 읽어야합니다. 첫 번째 부분 문자열은 배열의 모든 문자열에 대해 동일합니다.다른 문자열 사이에서 부분 문자열을 공유하는 방법은 무엇입니까?

public class MyCharSequence implements CharSequence { 

    public MyCharSequence(CharSequence common, CharSequence append) { 
     // ... 
    } 

    // other CharSequence method 
    // ... 
} 

구현 : 다음과 같은 방법으로, 당신이 일반 문자열에 대한 참조를 설정할 수있는 CharSequence를 필요하므로이 배열은, ArrayList<CharSequence> 인수를 제공 읽고, 물론 변수 서브하는 방법 매우 간단하지만, 이미 이런 일을 할 수있는 수업이 있었는지 궁금합니다.

+0

'ArrayList '객체로부터'common'과'append' charsequences를 분리하려고합니까? –

+1

'숙제'문제입니까 아니면 실제 문제입니까? –

+0

이것은 숙제가 아니지만 내가 개발중인 소프트웨어의 일부는 두 세트의 문자열에 속하는 문자열 사이의 Levenshtein 거리를 계산해야합니다. 첫 번째 세트를 만들기 위해서는 문자열 목록을 가져 와서 각 문자열에 문자열을 추가해야합니다.이 문자열은 항상 동일하므로 전체 목록을 반복하여 새 목록을 만드는 것이 편리하지 않습니다. 이러한 이유로, 나는 CharSequence의 구현을 직접 만들었습니다 ... 호기심에서 이미이 종류의 클래스가 있는지 또는 더 나은 대안이 있는지 궁금합니다. – enzom83

답변

0

로프이라는 일반 데이터 구조의 특수한 경우로, 문자 또는 기타 배열의 세그먼트를 링크 된 목록이나 트리에 정렬합니다. 일반적으로 배열/문자열 중간에 삽입 또는 삭제 속도를 높이거나 최소한의 복사로 비파괴 작업을 지원하는 것이 목표이지만, 관심있는 공유 하위 문자열을 포함하는 목록/트리 요소를 공유하여 메모리를 절약 할 수 있습니다. This article은 로프에 대한 간략한 개요로 시작하지만 부분 문자열 공유보다 효율적인 업데이트 작업에 더 중점을 둡니다.

Java 표준 라이브러리에는 로프 구현이 포함되어 있지 않지만 직접 작성하거나이 기사에서 설명한 것과 같은 기존 라이브러리를 사용해 보는 것이 쉽습니다. 라이브러리 권장 사항은 스택 오버플로에 관한 주제와 관련이 없으므로 그 이상의 방향을 제시 할 수는 없습니다.

관련 문제