using System.Collections.Generic;
public static void Main(string[] args)
var possibilities = GetPossibilities(stringText);
Console.WriteLine("The permutations of *{0}* are as shown below:", stringText);
foreach (var pos in possibilities)
Console.WriteLine(">>>>>>>>>>>>>>" + pos + "<<<<<<<<<<<<<<");
private static List<string> GetPossibilities(string text)
List<string> possibleStrings = new List<string>();
List<int> possibleInts = new List<int>();
var textArray = text.ToArray();
string prev = string.Empty;
string dummy = string.Empty;
var indexes = GetDigitsList(preIndexNum);
foreach (var index in indexes)
dummy = dummy + textArray[index - 1];
bool isPermutation = CheckPermutation(dummy, text);
possibleStrings.Add(dummy);
possibleInts.Add(preIndexNum);
reached = checkReached(preIndexNum, textArray.Length);
preIndexNum = GetNumberBasedOnTextLength(textArray.Length, preIndexNum);
var distinctStrings = possibleStrings.Distinct().ToList();
private static bool CheckPermutation(string dummy, string text)
if (dummy.Count() != text.Length)
if (dummy.Count(x => x == t) == text.Count(x => x == t))
private static int GetNumberBasedOnTextLength(int length, int number)
var digitsList = GetDigitsList(number);
var digitsArray = digitsList.ToArray();
var dummyIntList = new int[digitsArray.Length + 1];
for (int i = 0; i < digitsArray.Length; i++)
dummyIntList[i] = digitsArray[i];
for (int i = 0; i < dummyIntList.Length; i++)
if (dummyIntList[i] < length)
dummyIntList[i] = dummyIntList[i] + 1;
if (dummyIntList[i] == length)
for (int j = i; j < dummyIntList.Length; j++)
if (dummyIntList[j] < length)
dummyIntList[j] = dummyIntList[j] + 1;
var list = dummyIntList.ToList();
number = GenrateNumber(list.ToArray());
private static int GenrateNumber(int[] digitsArray)
for (int i = 0; i < digitsArray.Length; i++)
sum = sum * 10 + digitsArray[i];
private static List<int> GetDigitsList(int number)
List<int> digitsList = new List<int>();
digitsList.Add(number % 10);
private static bool checkReached(int preIndexNum, int length)
var digitsList = GetDigitsList(preIndexNum);
if (digitsList.Count() == length)
foreach (var digit in digitsList)