【问题标题】:Recursive function that return string array (JAVA)返回字符串数组的递归函数(JAVA)
【发布时间】:2013-12-19 17:10:16
【问题描述】:

我需要一些关于 JAVA 的帮助: 我有一个无法更改的函数签名,并且我的函数需要递归并返回字符串数组,而无需任何选项将其添加到签名中。

这是我的签名:

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

该函数在TRIE结构中查找相似的单词,它们之间的差异为K个字母。

例如,在带有单词 hello、nice、nine、cry 的 TRIE 中,对于单词“bike”和 k=2,函数将返回带有 nice 和 9 的 String[]

我不是在寻找解决方案,只是在寻找返回字符串数组的方法。

** 我用收到的签名编写了一个函数作为包装器,但我发现我不能使用包装器。

谢谢!

【问题讨论】:

  • 如果字符串在集合中,您可以return collection.toArray(new String[0]);

标签: java string recursion return-value


【解决方案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()]);
}

【讨论】:

    【解决方案2】:

    我不是在寻找解决方案,只是在寻找返回字符串数组的方法。

    要返回包含文字 string1string2 的字符串数组,您可以使用 array initializer,例如 return new String[] { "string1", "string2"};

    否则,如果您事先知道要返回多少个元素,您可以创建字符串数组并为其位置分配值:

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

    如果它是递归函数的返回类型,您可能需要使用递归调用的结果在当前调用中构建自己的结果。考虑到数组无法扩展,您需要创建一个具有预期大小的新数组,并将结果的值复制到其中,例如使用System.arraycopy

    【讨论】:

      【解决方案3】:

      使用类似的东西。 我不想提供完整的代码只是一个想法

      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, ..., ...);
      }
      

      【讨论】:

        猜你喜欢
        • 2020-09-25
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 2015-05-27
        • 1970-01-01
        • 2021-04-24
        • 2018-08-28
        • 2012-09-19
        相关资源
        最近更新 更多