LeetCode题目:面试题 08.08. 有重复字符串的排列组合

题目

题目链接:https://leetcode-cn.com/problems/permutation-ii-lcci/
题目解析:使用SET集合去重

代码

class Solution {
	//创建SET集合去除重复的字符串
 	Set<String> set  = new HashSet<>();
    public String[] permutation(String S) {
    	//递归调用
    	go(S,"");
    	//存放答案
    	String[] ans = new String[set.size()];
    	int i=0;
    	//将集合中的答案放入ans字符串数组中
    	for (String str : set) {
			ans[i]=str;
			i++;
		}
    	return ans;
    }
	private void go(String s, String str) {
		if(s.length()==1) {
			//System.out.println(str + " " + s);
			set.add(str+s);
			//System.out.println("----");
			return;
		}
		//循环遍历
		for(int i = 0 ;i<s.length();i++) {
			//System.out.println(str + " " + s);
			//stringBuffer对象用于切割字符串s
			StringBuffer sb = new StringBuffer(s);
			//用于连接字符串
			String str2 = new String(str);
			str2=str2+s.charAt(i);
			//递归调用
			go(sb.replace(i, i+1, "").toString(),str2);
		}
	}
}

你可能感兴趣的:(LeetCode,字符串,leetcode,算法)