LeetCode
面试题 08.08. 有重复字符串的排列组合
有重复字符串的排列组合。编写一种方法,计算某字符串的所有排列组合
示例1:
输入:S = "qqe"
输出:["eqq","qeq","qqe"]
示例2:
输入:S = "ab"
输出:["ab", "ba"]
解法:回溯法
解题思路: 首先,要求一个字符串的各种组合,我们第一个想法肯定是通过for循环,那么for循环的层数是多少勒,应该是该字符串的长度,然后通过for循环来进行匹配,但是,我们应该要注意一个问题,在进行排列组合的时候,可能会出现重复的字符串,比如说
字符串S = aa
我们的for循环代码是这样的
for(int i=0; i<2; i++)
for(int j=0; j<2; j++)
if(i!=j)
printf("%c%c\n",S[i],S[j]);
这时候,输出结果是这样的
aa
aa
也就是说会出现重复