Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions String_Functions/PermutationGeneration/Permutation.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import java.util.ArrayList;
import java.util.List;

/*
(c) Aritro 'sortira' Shome
*/
public class Permutation {

public static List<String> generatePermutations(String s) {
List<String> 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<String> 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<String> permutations = generatePermutations("abc");
for (String perm : permutations) {
System.out.println(perm);
}
}
}
39 changes: 39 additions & 0 deletions String_Functions/PermutationGeneration/permutation.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
#include <vector>
#include <string>
#include <algorithm>
/*
(c) Aritro 'sortira' Shome
*/
void backtrack(std::string &s, std::string &path, std::vector<bool> &used, std::vector<std::string> &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<std::string> generatePermutations(std::string s) {
std::vector<std::string> result;
std::string path;
std::vector<bool> used(s.size(), false);
backtrack(s, path, used, result);
return result;
}

// Example usage:
#include <iostream>

int main() {
std::vector<std::string> permutations = generatePermutations("abc");
for (const auto &perm : permutations) {
std::cout << perm << std::endl;
}
return 0;
}
21 changes: 21 additions & 0 deletions String_Functions/PermutationGeneration/permutation.py
Original file line number Diff line number Diff line change
@@ -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"))