发一个全排列算法,面试时可能会用到,输入一个字符串,返回所有的排列
增加了指定几个数字不能相邻的功能,但是觉得实现不是太好,大家有何高见
import java.util.ArrayList;
import java.util.List;
/**
* 全排列numbers
*
* @author laiseeme
*/
public class RangeNumber
{
private char[] numbers; //输入的字符数组
private List<String> list;//返回的全排列字符串数组
private String regex; //过滤相邻字符串的正则式
/**
* 增加检索相邻字符串的正则表达式
* @param numbers
* @param notNear
*/
public RangeNumber(char[] numbers,char[] notNear)
{
this.numbers = numbers;
StringBuilder sb = new StringBuilder();
sb.append("\\d*");
for(int i=0;i<notNear.length;i++)
{
sb.append("[");
sb.append(String.valueOf(notNear));
sb.append("]");
}
sb.append("\\d*");
regex = sb.toString();
System.out.println(regex);
}
public List range()
{
list = new ArrayList<String>();
int m,n;
m = 0;
n = numbers.length;
permutation(m,n);
return list;
}
/**
* 后补法全排算法
* @param m 数组游标
* @param n 字符串的长度
*/
private void permutation(int m, int n)
{
int i;
char t;
if (m<n-1)
{
permutation(m+1, n);
for (i=m+1;i<n;i++) {
t=numbers[m];
numbers[m]=numbers[i];
numbers[i]=t;
permutation(m+1, n);
t=numbers[m];
numbers[m]=numbers[i];
numbers[i]=t;
}
}
else
{
String value = String.valueOf(numbers);
if(!value.matches(regex))
{
list.add(value);
}
}
}
}
如果不需要过滤相邻的字符串就改成
else
{
list.add(value);
}
分享到:
- 2008-04-03 08:42
- 浏览 1421
- 评论(0)
- 论坛回复 / 浏览 (0 / 3646)
- 查看更多
相关推荐
自己写的基于字符的全排列算法,代码简洁,高效,7位数的全排列都是秒排!用到了广度优先排列,深度优先搜索和几个递归,唯一没完成的是退出时释放内存,呵呵,破解密码时超有用的哟,,
全排列算法
全排列算法 实例 一种实现了n个数全排列的算法 全排列算法 实例 一种实现了n个数全排列的算法
全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。
全排列算法
基于全排列算法的完整代码解析,可供理解搜索的技巧,有很高的使用价值
全排列算法详细解析(完整版)
使用递归实现的全排列算法,输出所有的全排列。 各种主流程序设计语言实现!
实现全排列组合的算法,供大家学习与参考。在需要对排列组合做差异分析的时候可以直接使用。例如:几个正则式的不同排列组合对匹配效果的影响
利用中介数实现全排列算法,采用java实现。
实现了字典序法、递增进位制数法、递减进位制数法、邻位对换法四种全排列算法。全排列算法有很多种,这里只是其中的一些,可以调试运行比较一下各种算法的效率。(该代码为初级版本,注重算法的实现,在交互方面需要...
组合数学中六种全排列算法详细解析,对于自学很有帮助哦,这里没有代码。
实现了全排列算法,每个元素用char类型表示,用递归算法,比较简洁实用。
交换算法得到全排列,排列组合的全排列算法(交换算法)
用objective-c实现全排列算法,用数组来保存全排列排列的结果
在程序设计过程中,我们往往要对一个序列进行全排列或者对每一个排列进行分析。全排列算法便是用于产生全排列或者逐个构造全排列的方法。当然,全排列算法不仅仅止于全排列,对于普通的排列,或者组合的问题,也可以...
全排列算法设计分析.ppt
全排列的生成算法
关于全排列算法。。。。
希望对需要的人有所帮助:) 希望对需要的人有所帮助:) 希望对需要的人有所帮助:)