2013-12-19 4 views
0

Мне нужна помощь в JAVA: У меня есть сигнатура функции, которую я не могу изменить, а моя функция должна быть рекурсивной и возвращать массив String без возможности ее добавления к подписи.Рекурсивная функция, возвращающая массив строк (JAVA)

Это подпись у меня есть:

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

Функция ищет подобные слова в структуре TRIE, с разницей K букв изменения между ними.

Например, в слове «TRIE» слова hello, nice, 9, cry, для слова «bike» и k = 2 функция вернет String[] с красивыми и девятью.

Я не ищу решение, просто для метода возврата массива строк.

** Я написал функцию с подписью, которую я получил как оболочку, но я только что узнал, что я не могу использовать оболочку.

Спасибо!

+0

Если строки в коллекции вы можете 'вернуть collection.toArray (новый 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

Я не ищу решение, только для метода, чтобы вернуть массив строк.

Чтобы вернуть массив строк с литералы string1 и string2 вы могли бы просто использовать array initializer такие как return new String[] { "string1", "string2"};

Else, вы можете просто создать массив строк и присвоить значения его позиции, если вы знаете заранее, сколько элементам вы будете возвращающиеся:

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"} 
} 

Может быть более полезным:

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()]); 
} 
Смежные вопросы