原文:
给定一个字符串 str ,任务是打印 str 的所有排列。排列是一组对象的全部或部分的排列,与排列的顺序有关。一个置换不应该在输出中有重复的字符串。
示例:
输入: str = "aa" 输出: aa 注意“aa”只打印一次 不允许重复。
输入:str = " ab " t3】输出:t5】ab ba
方法:编写一个递归函数,从原始字符串中逐个删除一个字符,并通过追加这些删除的字符生成一个新字符串。基本条件是所有字符都已被使用。在这种情况下,将生成的字符串(原始字符串的置换)插入到中,以避免重复。
下面是上述方法的实现:
// java implementation of the approach
import java.util.*;
public class gfg {
static set hash_set = new hashset<>();
// recursive function to generate
// permutations of the string
static void permutation(string str, string ans)
{
// if string is empty
if (str.length() == 0) {
// add the generated permutation to the
// set in order to avoid duplicates
hash_set.add(ans);
return;
}
for (int i = 0; i < str.length(); i ) {
// ith character of str
char ch = str.charat(i);
// rest of the string after excluding
// the ith character
string ros = str.substring(0, i)
str.substring(i 1);
// recurvise call
permutation(ros, ans ch);
}
}
// driver code
public static void main(string[] args)
{
string s = "ab";
// generate permutations
permutation(s, "");
// print the generated permutations
hash_set.foreach((n) -> system.out.println(n));
}
}
output:
ab
ba
麻将胡了pg电子网站的版权属于:月萌api www.moonapi.com,转载请注明出处