排列的Java递归语言实现】的更多相关文章

在做算法题的时候,发现排列经常被使用到,是一个重要的知识点, 下面是博主修改过的代码,初学者,如有不足,欢迎指出 import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Permutation{ public static void main(String[] args) { List<List<String>> lists = permute(Arrays.a…
题目: 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母. 分析: 可以采用递归和非递归两种方法实现. 递归方法使用交换的的思路,我们可以将字符串看成两部分,第一个字符和后面的字串,将第一个字符和后面的每一元素互换,这样就会产生新的排列,然后再递归执行后面的字串,具体流程如图: 出自:htt…
个人感觉这篇文章(原文地址见文章尾)写的排列组合问题,非常的好,而且是一步一步引出排列组合问题,我也是看了这篇文章,一步一步按照这个思路来,最后会了自己的一套排列组合 也因此在算法竞赛中,两次用到了,成功解决了问题. 第一个问题: 首先,先让我们来看第一个问题, 有1,2,3,4这4个数字.可以重复的在里面选4次,问能得到多少种结果.easy 1 1 1 1 1 1 1 2 1 1 1 3 1 1 1 4 1 1 2 1 1 1 2 2 ....... 4 4 4 3 4 4 4 4 代码实现其…
一.前言 我们都知道java是面向对象的编程,其中四个基本特性:抽象.封装.继承.多态.这四个特性,概括起来可以这么理解,抽象.封装.继承是多态的基础,多态是抽象.封装.继承的表现. 二. JAVA 语言特点    a) 跨平台,一次编译,到处运行.    b) 速度慢,但很稳定, 没有内存泄漏 (memory leakage),不容易出现错误.    c) 不适合对速度要求高的图形界面操作, 适合服务端应用.    C/S (Client/Server) -> B/S (Browser/Ser…
中xxx科技公司java笔试题 今天去参加一个公司的面试,去先做了一份笔试题,妈的,太他妈难了(对于我来说,最后做完一个员工说你是不是投错简历了,都是空白,我说我做的大部分都对了..最后面试都没有,就让我回来了,呵呵),抽空之余,我把试题弄到了手中,如下: 数据结构基础:1.现有堆栈,操作如下PUSH(1);PUSH(2);PUSH(3);POP();PUSH(4);POP();POP();PUSH(5);POP() 请问弹出元素的顺序是什么? 2.请填写以卜算法的执行效率:冒泡排序____,选…
一.Set接口 Set 接口与 List 接口相比没有那么多操作方法,比如: 1.List 接口能直接设置或获取某个元素的值,而Set接口不能. 2.List 接口能直接在指定位置删除.增加元素,而Set接口不能. 3.List 接口有 listIterator 方法,可以获得 ListIterator 对象,而 Set 接口不能.Set 只能通过 iterator 迭代的方式获取元素. 对比一下Set接口和Collection接口就知道,其实Set接口仅仅对Collection所有方法进行继承…
一.集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1.所有集合类都位于java.util包下.Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类.2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础.3. 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现.可扩展为自定义集合类.4. 实现类:8个实现类(实线表示),对接口的具体实现.5. Col…
1.TreeMap集合倒序排列 import java.util.Comparator; /** * 比较算法的类,比较器 * @author Administrator * */ public class MyCmp implements Comparator<Object> { // 实现倒序 @Override public int compare(Object o1, Object o2) { int x = o2.toString().compareTo(o1.toString())…
HashSet 与TreeSet和LinkedHashSet的区别 今天项目开发,需要通过两个条件去查询数据库数据,同时只要满足一个条件就可以取出这个对象.所以通过取出的数据肯定会有重复,所以要去掉重复项. 如果用list集合接收两次的返回对象,那么肯定是有重复对象在list集合中,一开始我想到的是TreeSet,但知道TreeSet存放对象,一定要重写compareto方法,进行排序规则. 而我仅仅是去重,并不需要排序. 所以我就用了HashSet,下面也就缕一缕有关set集合的一些知识点.…
Java中sleep和wait的区别 ① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类. sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep. ② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法. sleep不出让系统资源:wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU.一…