获得一些字符javascript的所有可能组合

时间:2014-12-12 22:17:38

标签: javascript

所以如果有A,B,C, 我想创建一些长度为4的字符串

所以输出将是

AAAA
AAAB
AAAC
AABA
AABB
AABC
ABAB
....
CCCC

1 个答案:

答案 0 :(得分:-1)

有一些评论,所以你可以理解这一点。感谢http://www.walmik.com/2013/03/rearrange-letters-of-a-word/

function permutate(theWord){

      //Array to store the generated words
      var words = [];

      /**
       * Recursive function to split a string and rearrange 
       * it's characters and then join the results
       */
      function rearrange(str, prefix) {

        var i, singleChar, balanceStr, word;

        //The first time round, prefix will be empty
        prefix = prefix || '';

        //Loop over the str to separate each single character

        for(i = 0; i < str.length; i++) {
          singleChar = str[i];
          balanceStr = str.slice(0, i) + str.slice(i+1);

          //join the prefix with each of the combinations
          word = prefix + singleChar + balanceStr;

          //Inject this word only if it does not exist
          if(words.indexOf(word) < 0) words.push(word);

          //Recursively call this function in case there are balance characters
          if(balanceStr.length > 1) rearrange(balanceStr, prefix + singleChar);

        }

      }

      //kick start recursion
      rearrange(theWord);
      return words;

    }

    var permutatedWord = permutate('goal');
    console.log(permutatedWords);