您的位置:首页 > 其它

字符串全排列问题

2015-08-19 15:04 393 查看
全排列问题:给定字符串 abc,全排列为:abc, acb, bac, bca, cab, cba

递归实现:

1、标记访问状态数组 val,当前所保存的字符串对象 tmp,保存结果数组 res;

2、思路:

(2.1)每次从 0 到 str.length() - 1,选择未被访问的字符加入到 tmp 中,标记当前字符为已访问;

(2.2)往后递归;

(2.3)当所有的字符都被访问过时,加入到 res 数组中;

/**
* 输入一个字符串,打印出该字符串中字符的所有排列 (递归)
* @param str
* @param tmp
* @param val
*/
public void permutations(String str, String tmp, int[] val) {
int j = 0 ;
for(j = 0; j < val.length; j ++) {
if(val[j] == 0) {
break ;
}
}
if(j == val.length) {
res.add(tmp) ;
}
for(int i = 0; i < str.length(); i ++) {
if(val[i] == 0) {
tmp += str.charAt(i) ;
val[i] = 1 ;
permutations(str, tmp, val) ;
val[i] = 0 ;
tmp = tmp.substring(0, tmp.length() - 1) ;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: