【发布时间】: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<String>处理所有数据。import java.util.ArrayList;在顶部,所以不要到处使用完全命名空间限定的对象语法。保持简单。
标签: java arrays arraylist palindrome