find all the permutations of a given string
Given a string S. The task is to print all permutations of a given string.
example 1:
Input:
ABC
Output:
ABC ACB BAC BCA CAB CBA
example 2:
Input:
ABSG
Output:
ABGS ABSG AGBS AGSB ASBG ASGB BAGS BASG BGAS BGSA BSAG BSGA GABS GASB GBAS GBSA GSAB GSBA SABG SAGB SBAG SBGA SGAB SGBA
c++ implementation:
#include <bits/stdc++.h> using namespace std; vector<string>v; void permutations(string s,int l,int r) { if(l==r) v.push_back(s); else { for (int i = l; i <= r; i++) { // Permutations made swap(s[l], s[i]); // Recursion called permutations(s, l+1, r); //backtrack swap(s[l], s[i]); } } } int main() { int t; cin>>t; while(t--) { string s;cin>>s; int n=s.length(); permutations(s,0,n-1); sort(v.begin(),v.end()); for(int i=0;i<v.size();i++) cout<<v[i]<<" "; v.clear(); cout<<endl; } return 0; }
we have used the vector in the above solution because we need to sort the output strings in lexicographical order.
Time Complexity: O(n*n!) Note that there are n! permutations and it requires O(n) time to print a permutation.
No comments