我想建立一个包含单词大写的所有可能排列的列表。所以会是

List<string> permutate(string word)
{
    List<string> ret = new List<string>();
    MAGIC HAPPENS HERE
    return ret;
}

所以说我放入"happy"我应该得到一个数组
{happy, Happy, hAppy, HAppy, haPpy, HaPpy ... haPPY, HaPPY, hAPPY, HAPPY}

我知道有很多功能可以将第一个字母大写,但是我该如何在单词中使用任意字母呢?

最佳答案

如果将字符串转换为char数组,则可以修改单个字符。这样的事情应该可以解决问题...

public static List<string> Permute( string s )
{
  List<string> listPermutations = new List<string>();

  char[] array = s.ToLower().ToCharArray();
  int iterations = (1 << array.Length) - 1;

  for( int i = 0; i <= iterations; i++ )
  {
    for( int j = 0; j < array.Length; j++ )
    array[j] = (i & (1<<j)) != 0
                  ? char.ToUpper( array[j] )
                  : char.ToLower( array[j] );
    listPermutations.Add( new string( array ) );
  }
  return listPermutations;
}

关于c# - 大写字母的排列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/905317/

10-13 06:48