【问题标题】:Return an array of Palindromes - converting arraylist to array返回回文数组 - 将数组列表转换为数组
【发布时间】:2016-03-30 23:03:27
【问题描述】:

我有以下代码用于在数组中返回回文 - 代码工作正常,但我实际上将 arraylist 转换为数组 - 因为大小未知 - 这是一个昂贵的转换吗?时间复杂度是多少? Java 编码新手 - 我自己编写代码,但我一直在弄清楚数组转换的时间复杂度..

public class palindrome{

public static void main(String[] args){

String[] arr = {"saw","madam","level","taco","tomot"};
String[] res = palind(arr);
System.out.println(java.util.Arrays.toString(res));
}

public static String[] palind(String[] arr){
    int count = 0;
    java.util.ArrayList<String> list = new java.util.ArrayList<String>();
    for(String s : arr){
            if(isPalindrome(s) == true){
                count++;
                list.add(s);
            }
        }
    String[] a = list.toArray(new String[count]);
    return a;
}

public static boolean isPalindrome(String s){
 return s.equals(new StringBuilder(s).reverse().toString());
}
}

【问题讨论】:

  • 成本是“试一试”,真的。这里没有真正需要进行数组转换,只需使用ArrayList&lt;String&gt; 处理所有数据。 import java.util.ArrayList; 在顶部,所以不要到处使用完全命名空间限定的对象语法。保持简单。

标签: java arrays arraylist palindrome


【解决方案1】:

应该是 O(n),其中 n 是数组的大小。我看到了遍历数组的 n 时间,遍历的每一步都有固定的时间。

【讨论】:

    【解决方案2】:

    如果你能解决它,这是一个代价高昂的转换。如果没有办法绕过它,那么,即使代价高昂,你也别无选择。

    一种解决方法是放弃返回数组。如果您选择从palind 方法返回List&lt;String&gt; 怎么办:

    public static List<String> palind(String[] arr) {
    //..
    }
    

    如果不是太麻烦,您甚至可以在此处接受List&lt;String&gt; 以使其无数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2016-03-14
      • 2011-10-21
      • 2020-07-16
      • 2011-08-13
      • 1970-01-01
      • 2011-06-23
      相关资源
      最近更新 更多