import java.util.Arrays;
/**
*字典序全排列
*字符串的全排列
*比如单词"too" 它的全排列是"oot","oto","too"
*1,从右端开始扫描,若出现前一个比后一个小,记录前一个的元素下表index
*2,再找出index以后比该元素大的中的最小值的下标,(实现见 下面的getMin方法)
*3,index以后的元素实现反转(实现 见下面的reverse方法)
*结束条件:前一个都比后一个大的情况
*/
public class StringExpress{
int getMin(char[]input,int index){
char min=input[index];
int minIndex=index+1;
char result='z';
for(int i=index+1;i<input.length;i++){
if(input[i]>min&&input[i]<result){
result=input[i];
minIndex=i;
}
}
return minIndex;
}
void exchange(char []input,int index,int minIndex){
char temp=input[index];
input[index]=input[minIndex];
input[minIndex]=temp;
}
void reverse(char input[],int first,int end) {
while(first<end){
exchange(input,first,end);
first++;
end--;
}
}
void getDictionary(char c[]){
System.out.println(new String(c));
//boolean flag=true;
int i=0;
while(true){
i=c.length-1;
for(;i>0;i--){
if(c[i-1]<c[i])break;
}
if(i==0)break;
int minIndex=getMin(c,i-1);
exchange(c,i-1,minIndex);
reverse(c,i,c.length-1);
System.out.println(new String(c));
} }
public static void main(String []args){
String input="aat";
char [] c=input.toCharArray();
Arrays.sort(c);
new StringExpress().getDictionary(c);
}
}

java字典序全排列的更多相关文章

  1. HDOJ-ACM1016(JAVA) 字典序全排列,并剪枝

    转载声明:原文转自http://www.cnblogs.com/xiezie/p/5576273.html 题意: 一个环是用图中所示的n个圆组成的.把自然数1.2.…….n分别放入每个圆中,并在相邻 ...

  2. 字典序全排列(java实现)

    import java.util.Arrays; /** *字典序全排列 *字符串的全排列 *比如单词"too" 它的全排列是"oot","oto&q ...

  3. 面试:如何找出字符串的字典序全排列的第N种

    1.题目 如何找出字符串的字典序全排列的第N种?(字符串全排列的变种) 2.思路 主要想通过这题,介绍一下康托展开式.基于康托展开式可以解决这个问题. 一般的解法:①求出所有全排列 ②按照字典序排个序 ...

  4. java实现全排列输出

    java实现全排列输出 转自:http://easonfans.iteye.com/blog/517286 最近在找工作,面试java程序员或者软件工程师,在笔试的时候常常见到这么一道题:全排列 的输 ...

  5. java实现全排列

    前天上午的面试遇到了一个用java实现一串数字的全排列的题,想来想去用递归最方便,可是没有在规定的时间内完成555,今天上午有空便继续写,以下是完成后的代码: import java.util.Arr ...

  6. java实现全排列问题

    1.问题描述: 一组字符串的全排列,按照全排列的顺序输出,并且每行结尾无空格. 2.输入: 输入一个字符串 3.输入示例: 请输入全排列的字符串: abc 4.输出示例: a b c a c b b ...

  7. JAVA求解全排列

    一,问题描述 给定一个字符串,求出该字符串的全排列. 比如:"abc"的全排列是:abc.acb.bac.bca.cab.cba 二,实现思路 采用递归的方式求解.每次先选定一个字 ...

  8. java字典序排序

    import java.util.Comparator; import java.util.ArrayList; import java.util.Collections; public class ...

  9. 31. Next Permutation (java 字典序生成下一个排列)

    题目: Implement next permutation, which rearranges numbers into the lexicographically next greater per ...

随机推荐

  1. chrome 不支持window.webkitNotifications.createNotification消息通知API了

    今天惊奇的发现,chrome22里已经不支持window.webkitNotifications.createHTMLNotification方法了: 但是,在chrome extension里还可以 ...

  2. Yii2的urlManager URL美化

    Yii1.*与Yii2中配置路由规则rules是几乎是一样的,但还是有细微的差别. 在Yii1.*中开启path路由规则直接使用 'urlFormat' => 'path', 但在Yii2中已经 ...

  3. 前端Js跨域方法汇总—剪不断,理还乱,是跨域

    1.通过jsonp跨域2.通过修改document.domain来跨子域(iframe)3.隐藏的iframe+window.name跨域4.iframe+跨文档消息传递(XDM)5.跨域资源共享 C ...

  4. Xib中UIScrollView添加约束步骤

    要往scrollView里面添加子控件--从向往下排 0.设置scrollView的上下左右约束距离控制器view边距为零(确定frame的大小) 1.要往scrollView添加一个内容View 2 ...

  5. QA is more than Testing

    前话:在测试这个行业做了挺多年了,都快忘记自己大学的专业是国际经济与贸易,一个选择可能就决定了一生的方向. 但既然做了选择,就走下去. ----------------- 在这么多年的工作中,测试始终 ...

  6. 前端SEO技巧

    前几天在慕课网上学习了“SEO在网页制作中的应用”,觉得挺好.挺有用的,今天,特此做了一个小小的笔记,也算是对学习过后的一个总结. 一.搜索引擎工作原理 当我们在输入框中输入关键词,点击搜索或查询时, ...

  7. 一些SQL

    复制当前所有,ID自动增长.       insert into test(name,pass) select name,pass from test 删除当前重复      delete A fro ...

  8. HDU1003 简单DP

    Max Sum Problem Description Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the ...

  9. 给MySQL增加mysql-udf-http和mysql-udf-json自定义函数,让MySQL有调用http接口和查询直接回JSON的能力

    1.安装mysql-udf-httpyum install -y libcurl*下载地址:http://pan.baidu.com/s/1nuYZqR3tar zxvf mysql-udf-http ...

  10. cetnos 7 ntp服务的安装与配置

    首先需要搭建yum本地仓库 http://www.cnblogs.com/jw35/p/5967677.html   #搭建yum仓库方法 yum install ntp -y        #安装n ...