Use the following program to get the list of combination of characters from a String.
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
import java.util.ArrayList;
import java.util.List;
public class Combination
{
public static void main(String[] args)
{
Combination c = new Combination();
List<String> lstStr = c.getCombinations("dive");
for (String in : lstStr)
{
System.out.println(in);
}
}
public List<String> getCombinations(String num)
{
List<String> lstInt = new ArrayList<String>();
if (num.length() == 2)
{
lstInt.add((num));
lstInt.add(reverseStr(num));
return lstInt;
}
else if (num.length() == 1)
{
lstInt.add((num));
return lstInt;
}
else
{
for (int i = 0; i < num.length(); i++)
{
List<String> tempInt = getCombinations(getRemovedChar(num, i));
lstInt.addAll(appendStr(tempInt, num.charAt(i)));
}
}
return lstInt;
}
public List<String> appendStr(List<String> numLst, char g)
{
List<String> finalLst = new ArrayList<String>();
for (String r : numLst)
{
finalLst.add(r + g);
}
return finalLst;
}
public String getRemovedChar(String s, int i)
{
StringBuilder sb = new StringBuilder();
for (int j = 0; j < s.length(); j++)
{
if (j != i)
sb.append(s.charAt(j));
}
return sb.toString();
}
public String reverseStr(String s)
{
StringBuilder sb = new StringBuilder();
for (int j = s.length() - 1; j >= 0; j--)
{
sb.append(s.charAt(j));
}
return sb.toString();
}
}
Output:
evid
ievd
eivd
ived
vied
vedi
evdi
devi
edvi
dvei
vdei
iedv
eidv
deiv
ediv
diev
idev
ivde
vide
dvie
vdie
dive
idve