2013-12-19 4 views
0

Java에서 도움이 필요합니다. 변경할 수없는 함수 서명이 있습니다. 함수를 재귀 적으로 사용해야하고 추가 할 수있는 옵션이없는 문자열 배열을 반환해야합니다. 서명에.문자열 배열 (JAVA)을 반환하는 재귀 함수

public String[] findSimilar(String w, int index, int k) 

기능은 그들 사이의 K 문자 변경의 차이와 더불어, 트라이 구조에서 유사한 단어를 찾습니다 :

내가있어 서명입니다.

예를 들어, "자전거"와 k = 2 단어에 대해 hello, nice, nine, cry라는 단어가있는 경우 함수는 nice와 nine을 사용하여 String[]을 반환합니다.

나는 문자열 배열을 반환하는 메서드에 대한 해결책을 찾고 있지 않습니다.

** 래퍼로받은 서명이있는 함수를 작성했지만 래퍼를 사용할 수 없다는 것을 알았습니다.

감사합니다.

+0

(새로운 String [0]); ' –

답변

0

다음과 같이 사용하십시오. 난 그냥 문자열 배열을 반환하는 방법에 대한 해결책을 찾는 게 아니에요

public String[] findSimilar(String w, int index, int k) { 
    String[] res1=findSimilar(conditions one); 
    String[] res2=findSimilar(conditions two); 

    String[] res=new String[res1.length+res2.length]; 
    //use public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 
    System.arraycopy(copyFrom, ..., copyTo, ..., ...); 
} 
1

단지 아이디어를 전체 코드를 제공하고자하지 않을 것이다.

그렇지 return new String[] { "string1", "string2"};

, 당신은 단지 문자열 배열을 생성하고 사전에 얼마나 많은 알고있는 경우에 그 위치에 값을 할당 할 수있는 array initializer 같은 당신은 그냥 사용할 수 string2 리터럴 string1와 문자열 배열을 반환하고 요소는 반환됩니다

String[] arr = new String[2]; 
arr[0] = "string1"; 
arr[1] = "string2"; 
return arr; 

은 재귀 함수의 반환 형식이 있다면, 당신은 아마 현재 통화에 자신의 결과를 구축하기 위해 재귀 호출에서 결과를 사용해야합니다. 배열을 고려하면 확장 할 수 없으므로 예상 크기의 새 배열을 만들고 결과 값을 System.arraycopy과 같이 복사해야합니다.

1

사소한 예 :

public String[] findSimilar(String w, int index, int k) { 
    return new String[] {"string1","string2"} 
} 

아마 더 유용 : 문자열 당신이`collection.toArray을 반환 할 수 있습니다 모음에있는 경우

public String[] findSimilar(String w, int index, int k) { 
    List<String> similar = new ArrayList<>(); 
    // insert some implementation here 

    return similar.toArray(new String[similar.size()]); 
}