问题描述
输出给定字符串的不重复的全排列形式。注意:字符串中存在着重复的字符时需要去重。
例如:“abbb”,字符串中存在着重复的字符,需要去重。
不重复的全排列形式包括:[abbb,babb,bbab,bbba]
例如: “abc”,字符串中不存在重复的字符。
输出结果为: [abc,bac,bca,acb,cab,cba]
另外注意,bat 和 tab 尽管包含相同的字符,但是字符的位置顺序不同,这是两个不同的排列形式。
算法设计
package com.bean.algorithm.permutations;
import java.util.ArrayList;
public class DistinctPermutationsOfString {
static boolean isPresent(String s, ArrayList<String> Res) {
for (String str : Res) {
if (str.equals(s))
return true;
}
return false;
}
static ArrayList<String> distinctPermute(String str) {
// 如果字符串为空
if (str.length() == 0) {
// 返回空字符串
ArrayList<String> baseRes = new ArrayList<>();
baseRes.add("");
return baseRes;
}
// 取字符串的第一个字符
char ch =