diff --git a/String_Functions/PermutationGeneration/Permutation.java b/String_Functions/PermutationGeneration/Permutation.java new file mode 100644 index 0000000..37f8f23 --- /dev/null +++ b/String_Functions/PermutationGeneration/Permutation.java @@ -0,0 +1,37 @@ +import java.util.ArrayList; +import java.util.List; + +/* + (c) Aritro 'sortira' Shome + */ +public class Permutation { + + public static List generatePermutations(String s) { + List result = new ArrayList<>(); + backtrack(s, new StringBuilder(), new boolean[s.length()], result); + return result; + } + + private static void backtrack(String s, StringBuilder path, boolean[] used, List result) { + if (path.length() == s.length()) { + result.add(path.toString()); + return; + } + for (int i = 0; i < s.length(); i++) { + if (used[i]) continue; + used[i] = true; + path.append(s.charAt(i)); + backtrack(s, path, used, result); + path.deleteCharAt(path.length() - 1); + used[i] = false; + } + } + + // Example usage: + public static void main(String[] args) { + List permutations = generatePermutations("abc"); + for (String perm : permutations) { + System.out.println(perm); + } + } +} diff --git a/String_Functions/PermutationGeneration/permutation.cpp b/String_Functions/PermutationGeneration/permutation.cpp new file mode 100644 index 0000000..68c66fc --- /dev/null +++ b/String_Functions/PermutationGeneration/permutation.cpp @@ -0,0 +1,39 @@ +#include +#include +#include +/* + (c) Aritro 'sortira' Shome +*/ +void backtrack(std::string &s, std::string &path, std::vector &used, std::vector &result) { + if (path.length() == s.length()) { + result.push_back(path); + return; + } + for (size_t i = 0; i < s.length(); ++i) { + if (used[i]) continue; + used[i] = true; + path.push_back(s[i]); + backtrack(s, path, used, result); + path.pop_back(); + used[i] = false; + } +} + +std::vector generatePermutations(std::string s) { + std::vector result; + std::string path; + std::vector used(s.size(), false); + backtrack(s, path, used, result); + return result; +} + +// Example usage: +#include + +int main() { + std::vector permutations = generatePermutations("abc"); + for (const auto &perm : permutations) { + std::cout << perm << std::endl; + } + return 0; +} diff --git a/String_Functions/PermutationGeneration/permutation.py b/String_Functions/PermutationGeneration/permutation.py new file mode 100644 index 0000000..12a3ddb --- /dev/null +++ b/String_Functions/PermutationGeneration/permutation.py @@ -0,0 +1,21 @@ +# (c) Aritro 'sortira' Shome +def generate_permutations(s): + def backtrack(path, used, result): + if len(path) == len(s): + result.append("".join(path)) + return + for i, char in enumerate(s): + if used[i]: + continue + used[i] = True + path.append(char) + backtrack(path, used, result) + path.pop() + used[i] = False + + result = [] + backtrack([], [False] * len(s), result) + return result + +# Example usage: +print(generate_permutations("abc"))