一道递归算法--String[] 里面的字符无重复的排序
2015-08-24 14:13
274 查看
用java把1234各种排序都打印出来,如:1234,1243,1324,1342...(Hint:深度排序算法)。
面试时哪晓得深度什么子的,就直接用Arrays.asList返回的List的remove方法(当然,这是错的;Arrays.asList()返回的List是长度一定的,不能remove,抛出unsupportoperation异常)。上网看了看深度排序算法,终于实现了,现贴上,希望抛砖引玉,大家又什么更好的算法:
下面是用递归来写的:
package simpleTest;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
String[] array = new String[]{"1","2","3"};
listAll(Arrays.asList(array), "");
}
public static void listAll(List candidate,String prefix){
if(candidate.isEmpty())
System.out.println("prefix="+prefix);
for(int i=0;i<candidate.size();i++){
List temp = new LinkedList(candidate);
//System.out.println("i="+i);
//System.out.println("temp="+temp);
listAll(temp,prefix+temp.remove(i));
//System.out.println("templast="+temp);
}
}
}
面试时哪晓得深度什么子的,就直接用Arrays.asList返回的List的remove方法(当然,这是错的;Arrays.asList()返回的List是长度一定的,不能remove,抛出unsupportoperation异常)。上网看了看深度排序算法,终于实现了,现贴上,希望抛砖引玉,大家又什么更好的算法:
下面是用递归来写的:
package simpleTest;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;
public class Test2 {
public static void main(String[] args) {
String[] array = new String[]{"1","2","3"};
listAll(Arrays.asList(array), "");
}
public static void listAll(List candidate,String prefix){
if(candidate.isEmpty())
System.out.println("prefix="+prefix);
for(int i=0;i<candidate.size();i++){
List temp = new LinkedList(candidate);
//System.out.println("i="+i);
//System.out.println("temp="+temp);
listAll(temp,prefix+temp.remove(i));
//System.out.println("templast="+temp);
}
}
}
相关文章推荐
- Android-Fragment(基本知识,静态加载,动态加载)
- rust里使用thread_local!
- sRGB 和 Adobe RGB 有什么区别?
- ubuntu里面设置颜色
- angularjs 使用uploadify出现的问题总结
- HTML5:绘制图形
- OpenvSwitch架构
- HDU 1068
- 1.4、安装Docker Compose
- 文字飞入飞出效果/自定义View/随机刷新数据/
- sRGB
- kmalloc之后的指针,再memset是比较好的习惯
- 为一个viewcontroll添加web view的方法
- [LeetCode] Text Justification
- Linq 之 分页查询数据
- java RMB大写转化工具类
- 【分布式系统工程实现】CAP理论及系统一致性
- Surf与flann 算法代码实现
- Android模拟、实现、触发系统按键事件的方法
- Linux的inode、软链接、硬链接