If one wants to generate various possible permutations ( order matters) from a string.
Ex:
For input {'a','b'}, output would be 'a','b','ab','ba'
For input {'a','b','c'} , output would be 'a','b','c','ac','ab','bc','ac', 'abc'
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;
public class AllPerm {
static String originalString = "abc";
static Vector<String> stringSet = new Vector<String>();
static void addCharAt(int index){
int vecSize = stringSet.size();
for (int i=0;i<vecSize;i++){
StringBuffer element = new StringBuffer(stringSet.get(i));
for (int j=0;j<(element.length()+1);j++){
element.insert(j, originalString.charAt(index));
stringSet.add(element.toString());
element.deleteCharAt(j);
}
}
}
public static void main(String[] args) {
stringSet.add("");
for (int i=0;i<originalString.length();i++){
addCharAt(i);
}
for (int i=0;i<stringSet.size() ;i++){
System.out.println(i + " " + stringSet.get(i));
}
}
}
Ex:
For input {'a','b'}, output would be 'a','b','ab','ba'
For input {'a','b','c'} , output would be 'a','b','c','ac','ab','bc','ac', 'abc'
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.Vector;
public class AllPerm {
static String originalString = "abc";
static Vector<String> stringSet = new Vector<String>();
static void addCharAt(int index){
int vecSize = stringSet.size();
for (int i=0;i<vecSize;i++){
StringBuffer element = new StringBuffer(stringSet.get(i));
for (int j=0;j<(element.length()+1);j++){
element.insert(j, originalString.charAt(index));
stringSet.add(element.toString());
element.deleteCharAt(j);
}
}
}
public static void main(String[] args) {
stringSet.add("");
for (int i=0;i<originalString.length();i++){
addCharAt(i);
}
for (int i=0;i<stringSet.size() ;i++){
System.out.println(i + " " + stringSet.get(i));
}
}
}
No comments:
Post a Comment